Android 13.0 第三方app安装完成后默认授予运行时权限 PackageManagerService.java和DefaultPermissionGrantPolicy.java代码应该修改哪些地方
时间: 2024-11-25 11:10:57 浏览: 36
在Android 13.0中,为了处理新版本的权限管理政策,`PackageManagerService.java`和`DefaultPermissionGrantPolicy.java`这两个核心文件可能会涉及到以下几个方面的修改:
1. **权限请求流程**:`PackageManagerService`中的部分函数可能需要检查并更新权限请求的时机,比如在应用安装后不再是默认授予,而是需要通过`ActivityManager`发送请求到用户界面,等待用户的确认。
```java
// 可能需要更改的地方
Intent intent = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS);
intent.putExtra(ACTION_EXTRA_ALLOW_ALL, false); // 设置默认不允许
startActivityForResult(intent, MY_PERMISSION_REQUEST_CODE);
```
2. **权限状态跟踪**:`DefaultPermissionGrantPolicy`可能需要处理新的权限状态,比如保存用户的临时选择或者长期拒绝的权限。
```java
// 更新权限状态存储和处理逻辑
if (permissionState == PackageManager.PERMISSION_DENIED) {
// 用户拒绝了权限,记录并提示用户
}
else if (permissionState == PackageManager.PERMISSION_GRANTED) {
// 权限已被授予,更新应用的权限配置
}
```
3. **回调处理**:应用需要提供合适的回调处理机制,以便在用户授权后可以适当地启动或操作受限制的功能。
```java
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// 根据结果更新权限并初始化应用功能
}
```
阅读全文