欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Android 13 添加运行时权限

最编程 2024-10-17 22:45:32
...
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -925,6 +925,45 @@ final class DefaultPermissionGrantPolicy { String commonServiceAction = "android.adservices.AD_SERVICES_COMMON_SERVICE"; grantPermissionsToSystemPackage(pm, getDefaultSystemHandlerServicePackage(pm, commonServiceAction, userId), userId, NOTIFICATION_PERMISSIONS); + // For custom pkg + grantPermissionsToCustomApp(pm, PCK_NAME_QMMI, userId); + grantPermissionsToCustomApp(pm, PCK_NAME_SNAPDRAGON_CAMERA, userId); + } + + // custom app add default package + private static final String PCK_NAME_QMMI = "com.qualcomm.qti.qmmi"; + //骁龙照相机(厂测应用会调用起骁龙相机进行拍照测试) + private static final String PCK_NAME_SNAPDRAGON_CAMERA = "org.codeaurora.snapcam"; + + + /** + * 给定制的应用授予一些权限 + */ + private void grantPermissionsToCustomApp(PackageManagerWrapper pm , String packageName , int userId ){ + Log.i("Custom", "Granting permissions to " + packageName + " for user " + userId ); + try{ + PackageInfo customPackage = pm.getPackageInfo(packageName); + + if ((customPackage != null) && doesPackageSupportRuntimePermissions(customPackage)) { + + Set<String> permissions = new ArraySet<>(); + for (String permission : customPackage.requestedPermissions) { + final PermissionInfo perm = pm.getPermissionInfo(permission); + if (perm == null) { + continue; + } + if (perm.isRuntime()) { + Log.i("Custom", packageName + " need Runtime permission : " + permission ); + permissions.add(permission); + } + } + if (!permissions.isEmpty()) { + grantRuntimePermissions(pm,customPackage, permissions, false, userId); + } + } + }catch(Exception e) { + e.printStackTrace(); + } }

上一篇: 新媒体优势

下一篇:

推荐阅读