【问题标题】:Android APP crash on getLastKnownLocation()Android APP 在 getLastKnownLocation() 上崩溃
【发布时间】:2017-10-11 13:00:02
【问题描述】:

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

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 上崩溃...谢谢您的帮助

【问题讨论】:

  • 请添加堆栈跟踪
  • 显示错误堆栈跟踪
  • 请问,如何在手机上获取错误堆栈跟踪?
  • 你在 android studio 底部的 android 监视器中得到它
  • “虽然它在以前的版本上正常工作”——不,它没有。它碰巧在您有限的测试中起作用。但是,正如 Gabe 所指出的,getLastKnownLocation() 会大量返回null,您需要能够处理这些问题。 The documentation 描述了这个过程。仅将getLastKnownLocation() 用作优化,而不是您获取位置的主要方式。

标签: java android geolocation position


【解决方案1】:

因为getLastKnownLocation 大部分时间都返回 null。系统一般不知道你的location。使用requestLocationUpdatesrequestSingleUpdate开启location检测并获取实际位置。

【讨论】:

  • 谢谢,但为什么这种情况只发生在 Android 7 上?它完美适用于 5...
  • 它会成功还是失败,这取决于系统是否有一个它已经知道并且不是陈旧的位置,在任何操作系统上。您在 7 而不是 5 上看到它的事实是巧合。也许您有另一个应用程序正在使用您的 5 设备而不是 7 设备上的位置。或者缓存代码可能有点挂起。但它可以而且将会发生在任何操作系统版本上。 getLastKnownLocation 可以用作优化,但从不依赖。
猜你喜欢
  • 1970-01-01
  • 2021-03-04
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多