Android GPS获取位置在x86模拟器中返回null但在arm模拟器中返回真值

时间:2016-03-17 11:55:36

标签: android nullpointerexception gps android-emulator locationmanager

我尝试使用LocationManager获取LastKnowLocation,这是我的代码:

LocationManager mLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (mLocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        Location mLocation = mLocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }

我已在AndroidManifest.xml中添加权限:

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

然后我使用DDMS向模拟器发送经度和纬度,但是当我使用x86 CPU模拟器时,我得到的错误就像

Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

当我使用arm CPU模拟器时,我得到了正确的纬度和经度。任何人都可以告诉我为什么无法在x86模拟器中找到正确的位置,我该如何处理它。谢谢。

1 个答案:

答案 0 :(得分:0)

解决! getLastKnownLocation()方法不会请求新的位置,它只是可以检查是否有来自其他应用程序的位置请求的最后一个已知位置。当我使用arm模拟器时我曾使用其他应用程序来获取位置,所以我的代码也可以得到位置。

因此,如果您的应用返回错误,请

invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

可能由于getLastKnownLocation()方法,尝试使用requestLocationUpdates()来获取位置。

看看这个: [Error invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference