java .lang.NullPointerException at android .content.ContextWrapper.getPackageName - PullRequest
0 голосов
/ 02 апреля 2020

Привет, ребята, я отправляю текущие значения широты и долготы из MainActivity в другой класс, но каждый раз, когда код выполняется, я получаю сообщение об ошибке нулевого указателя.

Вот моя основная активность:

 public String getLocationName() {
    String streetaddress = null;

    Geocoder geocoder = new Geocoder(MainActivity.this);

    try {
        List<Address> addresses = geocoder.getFromLocation(lastLocation.getLatitude(), lastLocation.getLongitude(), 1);
        if (addresses.size() > 0) {
            Address address = addresses.get(0);
            streetaddress = address.getAddressLine(0);
            Log.e("StreetAddress", String.valueOf(streetaddress));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return streetaddress;
}

Этот метод работает нормально в MainActivity, но в другом классе при доступе к этому методу происходит сбой приложения.

Вот как я получаю доступ к этому методу:

   MainActivity mainActivity = new MainActivity();

        String Z = mainActivity.getLocationName();
        Log.e("Z here", Z );

1 Ответ

0 голосов
/ 03 апреля 2020

Используйте LocationManager.

       LocationManager lm = 
              (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
       double longitude = location.getLongitude();
      double latitude = location.getLatitude();


     private final LocationListener locationListener = new LocationListener() {
     public void onLocationChanged(Location location) {
       longitude = location.getLongitude();
    latitude = location.getLatitude();
             }
        }

       lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, 
       locationListener);

Вам нужно дать вашему приложению разрешение ACCESS_FINE_LOCATION, если вы хотите использовать GPS.

        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Вы также можете добавить Разрешение ACCESS_COARSE_LOCATION для случаев, когда GPS недоступен, и выберите поставщика местоположения с помощью метода getBestProvider ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...