问题描述
去除所有应用权限弹窗,解决Rk4kVideoPlayer因为默认权限无法使用的问题
解决方案:
frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java
if (data != null && data.mPostInstallRunnable != null) {
data.mPostInstallRunnable.run();
} else if (data != null && data.args != null) {
InstallArgs args = data.args;
PackageInstalledInfo parentRes = data.res;
// 第三方APP安装跳过授权弹窗,默认授予申请权限
- //final boolean grantPermissions = (args.installFlags
- // & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
+ final boolean grantPermissions = true;
final boolean killApp = (args.installFlags
& PackageManager.INSTALL_DONT_KILL_APP) == 0;
frameworks\base\services\core\java\com\android\server\pm\permission\DefaultPermissionGrantPolicy.java
private static final Set<String> STORAGE_PERMISSIONS = new ArraySet<>();
static {
STORAGE_PERMISSIONS.add(Manifest.permission.READ_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.ACCESS_MEDIA_LOCATION);
}
//安装权限
+ private static final Set<String> INSTALL_PERMISSIONS = new ArraySet<>();
+ static {
+ INSTALL_PERMISSIONS.add(Manifest.permission.INSTALL_PACKAGES);
+ INSTALL_PERMISSIONS.add(Manifest.permission.REQUEST_INSTALL_PACKAGES);
+ INSTALL_PERMISSIONS.add(Manifest.permission.INSTALL_LOCATION_PROVIDER);
+ INSTALL_PERMISSIONS.add(Manifest.permission.INSTANT_APP_FOREGROUND_SERVICE);
+ }
private static final int MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS = 1;
frameworks\base\services\core\java\com\android\server\pm\permission\PermissionManagerService.java
if (bp.isNormal()) {
// For all apps normal permissions are install time ones.
grant = GRANT_INSTALL;
} else if (bp.isRuntime()) {
/*
- if (origPermissions.hasInstallPermission(bp.getName())
- || upgradedActivityRecognitionPermission != null) {
- // Before Q we represented some runtime permissions as install
- // in Q we cannot do this anymore. Hence upgrade them all.
- grant = GRANT_UPGRADE;
- } else {
- // For modern apps keep runtime permissions unchanged.
- // 对于内置应用,保持运行时权限不变。
- grant = GRANT_RUNTIME;
- }
*/
+ grant = GRANT_INSTALL;
} else if (bp.isSignature()) {
- // For all apps signature permissions are install time ones.
- // 对于所有应用程序,签名权限都是在安装时确定的
- /*
- allowedSig = grantSignaturePermission(perm, pkg, ps, bp, origPermissions);
- if (allowedSig) {
- grant = GRANT_INSTALL;
- }
- */
+ grant = GRANT_INSTALL;
}