Я что-то упускаю при получении текущего местоположения GPS?

#java #android #gps

Вопрос:

Недавно я начал разрабатывать приложение и последние несколько дней работал над частью GPS, чтобы получить адрес пользователя.

Проблема в том, что если я запускаю приложение в эмуляторе Android Studio и изменяю адрес на карте, он правильно отображается в тосте и в строковой переменной, которую я создал для хранения адреса, как показано на скриншоте ниже, но если я создаю APK и запускаю его на смартфоне, то Тост не отображается, а строковая переменная остается пустой.

Есть ли что-то в моем коде, что я забываю? Я вставлю код, чтобы кто-нибудь мог просмотреть его ниже.

 public class FragmentT1_Agora extends Fragment {   View view;   LocationManager locationManager;  String moradaAtual; // Current Address    private Button btEnviar;   public FragmentT1_Agora() {  // Required empty public constructor  }   @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {  // Inflate the layout for this fragment  view = inflater.inflate(R.layout.fragment_t1_agora, container, false);    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {  ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 100);  }    locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);  locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 3, mLocationListener);   return view;  }   private final LocationListener mLocationListener = new LocationListener() {  @Override  public void onLocationChanged(Location location) {  Toast.makeText(getContext(), ""   location.getLatitude()   ","   location.getLongitude(), Toast.LENGTH_LONG).show();  try {  Geocoder geocoder = new Geocoder(getContext(), Locale.getDefault());  Listlt;Addressgt; moradas = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);  moradaAtual = moradas.get(0).getAddressLine(0);   Toast.makeText(getContext(), "Morada: "   moradaAtual, Toast.LENGTH_LONG).show();   } catch (Exception e) {  e.printStackTrace();  }  }   @Override  public void onStatusChanged(String provider, int status, Bundle extras) {   }   @Override  public void onProviderEnabled(String provider) {   }   @Override  public void onProviderDisabled(String provider) {   }  }; }  

Я опустил код, который не связан с GPS.

Скриншот: Скриншот

Комментарии:

1. Есть ли в вашем манифесте ` ACCESS_FINE_LOCATION» /gt; `?

2. Включены ли службы определения местоположения по телефону?

3. @Strom Да, у моего манифеста есть такое разрешение

4. Привет, может помочь поделиться частью кода, которая по разрешению пользователя?

5. Давайте попробуем добавить эту часть, и когда разрешение было предоставлено, можете добавить locationManager.requestLocationUpdates() туда