在Android 11上,高级定位(例如室内定位和Wi-Fi扫描定位)可能无法正常工作,因为系统在某些情况下禁用了定位服务。解决此问题的一种解决方法是使用以下代码:
private void checkPermissions() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// ask for permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_LOCATION);
} else {
// Permission already granted
// start location updates
startLocationUpdates();
}
}
private void startLocationUpdates() { fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper()); }
其中fusedLocationProviderClient是FusedLocationProviderClient类的实例,locationRequest是LocationRequest类的实例,而locationCallback是LocationCallback类的实例。
此解决方案将确保您的应用程序已获得必要的定位权限,并可从FusedLocationProviderClient获取位置更新,以便在Android 11上的设备上顺利使用定位功能。