LocationService.FusedLocation 仅在某些设备上返回 null
LocationService.FusedLocation returning null only on some devices
我正在尝试获取用户的最后已知位置。
GoogleAPI连接后,我调用我的函数:
@Override
public void onConnected(Bundle bundle) {
initilizeMap();
}
函数如下所示:
private void initilizeMap(){
mLastLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
if (mLastLocation != null){
...
}else{
// location unknown
}
}
我先打开了Google地图来获取用户的当前位置。但是,mLastLocation
仍然为空。
最有趣的是代码在索尼平板电脑上运行。但是我今天将 phone 更改为 Nexus,但它无法在此设备上运行!
我该如何解决这个问题?
P.S。我在我的清单文件中包含了这些权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
和android版本是6.0.1
列出的任何危险权限 here need to be requested at run time, as shown on Requesting Permissions at Run Time 否则您将收到 Permission Denied
错误,这可能会在您的应用程序中产生意外结果。
您检查权限:
ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION)
它可以 return PackageManager.PERMISSION_GRANTED
或 PackageManager.PERMISSION_DENIED
如果您获得 PackageManager.PERMISSION_DENIED
,那么您可以通过以下方式请求该权限:
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);
其中 MY_PERMISSION_REQUEST_ACCESS_LOCATION
是您定义的 int
变量,该变量传递给 onRequestPermissionsResult
的回调,您在其中处理权限 allow/deny 的结果。
我正在尝试获取用户的最后已知位置。
GoogleAPI连接后,我调用我的函数:
@Override
public void onConnected(Bundle bundle) {
initilizeMap();
}
函数如下所示:
private void initilizeMap(){
mLastLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
if (mLastLocation != null){
...
}else{
// location unknown
}
}
我先打开了Google地图来获取用户的当前位置。但是,mLastLocation
仍然为空。
最有趣的是代码在索尼平板电脑上运行。但是我今天将 phone 更改为 Nexus,但它无法在此设备上运行!
我该如何解决这个问题?
P.S。我在我的清单文件中包含了这些权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
和android版本是6.0.1
列出的任何危险权限 here need to be requested at run time, as shown on Requesting Permissions at Run Time 否则您将收到 Permission Denied
错误,这可能会在您的应用程序中产生意外结果。
您检查权限:
ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION)
它可以 return PackageManager.PERMISSION_GRANTED
或 PackageManager.PERMISSION_DENIED
如果您获得 PackageManager.PERMISSION_DENIED
,那么您可以通过以下方式请求该权限:
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);
其中 MY_PERMISSION_REQUEST_ACCESS_LOCATION
是您定义的 int
变量,该变量传递给 onRequestPermissionsResult
的回调,您在其中处理权限 allow/deny 的结果。