簡體   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