如何解决获取纬度或GPS的空指针异常?

时间:2010-02-08 07:36:56

标签: android gps

我正试图获得当前的长期,拉特。我正在获得Nullpointer LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    LocationListener myLocationListener = new CurrentLocationListener(); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, myLocationListener);
    Location currentLocation = locationManager.getLastKnownLocation("gps"); 
    Latitude = currentLocation.getLatitude();  ----->>> null pointer exception here
    Longitude = currentLocation.getLongitude();

public class CurrentLocationListener implements LocationListener{
    public void onLocationChanged(Location argLocation) {
    }
    public void onProviderDisabled(String provider) {
    }
    public void onProviderEnabled(String provider) {
    }
    public void onStatusChanged(String provider, int status, Bundle arg2) {
    }
} 

我的清单文件

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

4 个答案:

答案 0 :(得分:3)

这通常是因为没有最后知道的位置。要强制获取位置,您可以注册位置更新并等待,或者您可以启动谷歌地图应用程序,使用菜单获取位置 - &gt;我的位置,返回您的应用程序,最后知道位置不应该为空。

答案 1 :(得分:1)

您是否在清单文件中设置了正确的权限?类似的东西:

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

答案 2 :(得分:1)

有点明显......

Location currentLocation = locationManager.getLastKnownLocation("gps"); 

if (currentLocation != null)
{
    Latitude = currentLocation.getLatitude();
    Longitude = currentLocation.getLongitude();
}

现在,关于为什么locationManager返回空引用而不是实际的位置引用...很难用提供的代码知道。可能是什么。

编辑:嗯,好像你可能有no gps fix yet

答案 3 :(得分:1)

我自己终于得到了答案......

How to emulate GPS location in the Android Emulator?