Java 如何获得用户';Android(2.2)设备上的GPS定位

Java 如何获得用户';Android(2.2)设备上的GPS定位,java,android,gps,android-location,Java,Android,Gps,Android Location,我试图简单地获取用户的GPS位置,但在尝试获取设备的纬度和经度时,我的应用程序崩溃。有关错误发生的位置,请参阅代码 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager lm = (LocationManager)getSystemService(Context

我试图简单地获取用户的GPS位置,但在尝试获取设备的纬度和经度时,我的应用程序崩溃。有关错误发生的位置,请参阅代码

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    final double longitude = location.getLongitude();  //error occurs here
    final double latitude = location.getLatitude();    //and here

    LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
          // Called when a new location is found by the network location provider.
            //longitude = location.getLongitude();
            //latitude = location.getLatitude();
        }
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {}
        public void onProviderDisabled(String provider) {}
      };
    //update location via GPS PROVIDER
    //can also use LocationManager.NETWORK_PROVIDER
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

}
我还在清单文件中包括访问\u FINE\u位置权限:

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


所以我不太清楚为什么这不起作用。任何帮助都将不胜感激

我想您可以检查这个堆栈溢出问题:

您的错误很可能在:lm.getlastnownlocation(LocationManager.GPS\u PROVIDER)


这是因为getLastKnownLocation是一个非阻塞调用,并且假设应用程序刚刚启动,系统没有“最后一个已知位置”。您可能希望循环,直到getLastKnownLocation没有得到非null值。

如果发生崩溃,则意味着您得到了一个调用堆栈。您可能想发布它。听起来像location=null,但就像Mike说的……我们需要日志。@EboMike@user432209对此表示抱歉。我得到一个NULLPointerException。位置=空。所以我假设当它试图获取用户的最后一个已知位置时,没有找到一个位置。有没有更好/不同的方法来查找用户的位置,而不是使用getLastKnownLocation?您需要显示完整的调用堆栈。它包含问题发生的确切路线,以及可能的进一步信息。