是的,位置权限策略也适用于非直接位置API,例如Wi-Fi扫描、蓝牙扫描和传感器数据等。这些非直接位置API需要访问设备的位置信息,因此需要用户授予相应的位置权限。
以下是获取位置权限的代码示例:
// 如果没有位置访问权限,请向用户请求它 if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.ACCESS_COARSE_LOCATION)) {
// 显示一个解释,为什么需要访问位置信息
// 例:为了搜索附近的Wi-Fi网络
} else {
// 无需展示解释,直接请求权限
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
}
}
//在onRequestPermissionsResult方法中处理位置访问权限的结果 @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: { // 如果权限请求被取消,grantResults数组将为空 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限已被授予 // 进行位置为功能 } else { // 权限被拒绝 // 禁用位置相关功能 } return; } } }