安卓14给系统应用默认赋予所有权限

只要是设计到默认赋权,就在framework下找这个类:base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java

其中看到下面这个方法,开机的时候就会调用,赋予默认权限的,我们只需在新增一个默认给系统应用赋予所有权限的方法并在这个grantDefaultPermissions方法中调用即可

   public void grantDefaultPermissions(int userId) {
        DelayingPackageManagerCache pm = new DelayingPackageManagerCache();
        grantPermissionsToSysComponentsAndPrivApps(pm, userId);
        grantDefaultSystemHandlerPermissions(pm, userId);
        grantSignatureAppsNotificationPermissions(pm, userId);
        grantDefaultPermissionExceptions(pm, userId);
        // Apply delayed state
        pm.apply();
    }

新增的方法如下:
 

 private void grantAllPermissionsToAllSystemApps(int userId) {
        final PackageManager packageManager = mContext.getPackageManager();
        final List<PackageInfo> packages = packageManager.getInstalledPackages(
                PackageManager.PackageInfoFlags.of(PackageManager.GET_PERMISSIONS));

        for (PackageInfo pkg : packages) {
            ApplicationInfo appInfo = pkg.applicationInfo;
            String packageName = pkg.packageName;
            if (!appInfo.isSystemApp()) {
                continue;
            }
            String[] requestedPermissions = pkg.requestedPermissions;
            if (requestedPermissions == null) continue;

            for (String permission : requestedPermissions) {
                try {
                    android.util.Log.w("mtest","Checking permission: " + permission + " for package: " + packageName);
                        if (packageManager.checkPermission(permission, packageName) != PackageManager.PERMISSION_GRANTED) {
                            android.util.Log.w("mtest", "Granting permission: " + permission + " to package: " + packageName);
                            packageManager.grantRuntimePermission(packageName, permission, UserHandle.of(userId));
                        }else {
                            android.util.Log.w("mtest","Permission " + permission + " already granted for package: " + packageName);
                        }

                } catch (Exception e) {
                    Log.w(TAG, "Could not grant permission " + permission + " to " + packageName, e);
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值