繁体   English   中英

构建AOSP并添加具有运行时权限的系统应用

[英]Building AOSP and adding a system app with runtime permission

我使用Android 6 AOSP。 我能够将应用程序添加为系统应用程序,但是现在我想默认在该系统应用程序上添加运行时权限。 这样,应用程序可以启动,而无需要求用户验证权限。

你知道我该怎么做吗?

感谢您的帮助。

如果您的应用具有特权,则在清单中要求时将授予所有运行时权限。

为您的应用设置特权:
在Android.mk中

LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

如果这不能解决您的问题:
1.您可以在运行时中为您的应用授予运行时权限。 应用必须具有android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS。 Pm.java

IPackageManager pm = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
pm.grantRuntimePermission(pkgname, perm, UserHandle.USER_OWNER);
pm.updatePermissionFlags(perm, pkgname, PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT,
PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, UserHandle.USER_OWNER);
  1. 您可以通过修改DefaultPermissionGrantPolicy.java手动授予权限。

此外,如果应用程序使用与系统共享的用户ID。 即使未在清单中请求,也将授予任何许可。

android:sharedUserId="android.uid.system".

您可以通过修改DefaultPermissionsGrantPolicy.java类将运行时权限授予系统应用程序。

grantDefaultSystemHandlerPermissions(int userId)方法中,添加以下代码:

PackageParser.Package yourPackage = getSystemPackageLPr("YOUR_APP_PACKAGE_NAME");
if (yourPackage != null
                && doesPackageSupportRuntimePermissions(yourPackage)) {
    grantRuntimePermissionsLPw(yourPackage, CONTACTS_PERMISSIONS, userId);
    grantRuntimePermissionsLPw(yourPackage, CALENDAR_PERMISSIONS, userId);
}

确保在此行上方添加代码:

mService.mSettings.onDefaultRuntimePermissionsGrantedLPr(userId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM