[java.lang.NullPointerException at android.content.ContextWrapper.getPackageName

问题描述 投票:-1回答:1

大家好,我正在将当前的纬度和经度从MainActivity发送到另一个类,但是每次执行代码时,都会出现Null Pointer Error。

这是我的主要活动:

 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 );
android nullpointerexception maps
1个回答
0
投票

使用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);

如果您想使用GPS,则需要向您的应用程序授予ACCESS_FINE_LOCATION权限。

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

您可能还想在GPS不可用时添加ACCESS_COARSE_LOCATION权限,并使用getBestProvider()方法选择您的位置提供商。

© www.soinside.com 2019 - 2024. All rights reserved.