Android应用程序崩溃getLastKnownLocation()

问题描述:

我正在开发一个通过NETWORK_PROVIDER实现位置的Android应用程序,但我在执行Android 7时遇到问题(虽然它在以前的版本中正确工作)。这是代码:Android应用程序崩溃getLastKnownLocation()

LocationManager posM; 
double latitude; 
double longitude; 

List<Address> addresses = null; 

try { 
    posM = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location = posM.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 

    Geocoder geocoder; 

    geocoder = new Geocoder(Activity1.this, Locale.getDefault()); 

    addresses = geocoder.getFromLocation(latitude, longitude, 1); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

我不知道为什么它崩溃Android上的7 ...谢谢大家帮忙

+5

请添加堆栈跟踪 – JFPicard

+0

显示错误堆栈跟踪 –

+0

对不起,我怎样才能在手机上得到错误stacktrace? – Pietro

因为getLastKnownLocation回报空的大部分时间。系统通常不知道您的location。使用requestLocationUpdatesrequestSingleUpdate打开location检测并获取实际位置。

+0

谢谢,但为什么只有在Android 7上才会发生?它可以在5 ... – Pietro

+1

上完美工作,取决于系统是否有一个它已经知道的位置,并且在任何操作系统上都没有失效。事实上,你看到它在7而不是5是巧合。也许你有另一个应用程序在你的5设备上使用位置,而不是你的7。或者缓存代码可能会被挂起一点。但它可以并且会在任何操作系统版本上发生。 getLastKnownLocation可以用作优化,但从不依赖。 –