在Android 11(R)中,“Permission Denied Issue”问题主要涉及到对敏感权限的访问限制,如存储和定位权限。以下是一些解决方法和代码示例:
适配Scoped Storage(分区存储):
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// 请求读取存储权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
READ_STORAGE_PERMISSION_REQUEST_CODE);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// 请求写入存储权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_STORAGE_PERMISSION_REQUEST_CODE);
}
启用前台服务权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.FOREGROUND_SERVICE)
!= PackageManager.PERMISSION_GRANTED) {
// 请求前台服务权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.FOREGROUND_SERVICE},
FOREGROUND_SERVICE_PERMISSION_REQUEST_CODE);
}
请求定位权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// 请求精确定位权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
FINE_LOCATION_PERMISSION_REQUEST_CODE);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// 请求粗略定位权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
COARSE_LOCATION_PERMISSION_REQUEST_CODE);
}
请根据您的具体需求,选择适当的解决方法和代码示例来解决“Permission Denied Issue”问题。