【发布时间】:2016-03-22 16:10:33
【问题描述】:
我在 android 21 及更高版本上遇到以下错误。
我遇到以下错误,并且该错误对制造商或型号没有限制。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] android.content.pm.PackageManager.getPackagesForUid(int)' on a null object reference
at android.os.Parcel.readException(Parcel.java:1605)
at android.os.Parcel.readException(Parcel.java:1552)
at android.location.ILocationManager$Stub$Proxy.getLastLocation(ILocationManager.java:717)
at android.location.LocationManager.getLastKnownLocation(LocationManager.java:1200)
at [...]
触发错误的调用是以下任一:
mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
我事先检查 mLLocationManager 是否不为空,或者我是否拥有必要的权限。它适用于大多数情况,但我确实有一些崩溃事件。
有谁知道可以做些什么来避免它,或者是否有任何方法可以检测到它会发生所以我不请求位置?
感谢您的关注,
【问题讨论】:
-
只是为了理解,当您说某些情况时,您是否在同一设备上看到它有时会崩溃而有时会工作?
-
崩溃监控工具正在商店应用程序上检测到它。我开发的时候没有收到。不是那么频繁,但我收到了超过 100 次。
-
请检查我发布的链接。看来 getLastKnownLocation 并非万无一失。 GPS 的冷启动可能会为设备返回 null。正如另一个答案以及为可靠位置提供的链接中提到的,最好使用 LocationListener
-
他得到 null 作为方法的响应。我的代码在返回响应之前崩溃了。我认为它们是不同的问题。 Prasunnair,我认为这是一个不同的问题。当没有可用位置时,我的应用处理得很好。