权限的授予,涉及到了PermissionController、PermissionManagerService服务、AppOpsService服务,其中PermissionController会负责展示一个权限授予的Activity,当用户选择了允许后,就会通知PermissionManagerService服务和AppOpsService服务更新相应权限的状态。权限的拒绝流程和授予也是一样的。 APK的分类: https://mp.weixin.qq.com/...
1. com.android.permissioncontroller.permission.ui.grantpermissionsactivity 是什么? com.android.permissioncontroller.permission.ui.GrantPermissionsActivity 是一个Android系统内部的Activity,它属于Android的权限控制组件PermissionController的一部分。这个Activity的主要作用是处理应用运行时权限的请求,并向用户展示一个权限授...
publicstaticintcheckComponentPermission(String permission,intpid,intuid,intowningUid, boolean exported) {if(pid ==MY_PID) {returnPackageManager.PERMISSION_GRANTED; }//If there is an explicit permission being checked, and this is coming from a process//that has been denied access to that permissi...
@Override public int checkUidPermission(String permName, int uid) { final CheckPermissionDelegate checkPermissionDelegate; synchronized (mPackages) { if (mCheckPermissionDelegate == null) { return checkUidPermissionImpl(permName, uid); } checkPermissionDelegate = mCheckPermissionDelegate; } return check...
ActivityCompat.requestPermissions(this, new String[]{permission}, 1); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 源码追踪 检查权限 checkSelfPermission checkSelfPermission最终会调用到ActivityManager#checkComponentPermission,并且使得传入的pid和uid参数分别为应用的pid和uid。
Android 12 系统存在permissioncontroller的apk,用来管理权限 涉及PackageManagerService 和 PermissionManagerService app源码路径为packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ AppPermissions:是权限的实体类 packages\modules\Permission\PermissionController\src\com\android\pe...
@OverridepublicStringgetPermissionControllerPackageName(){synchronized(mPackages) {returnmRequiredInstallerPackage; } } mRequiredInstallerPackage这个变量具体赋值是在PMS的构造器中:对于原生Android 6.0,权限管理的APP跟安装器是同一个 mRequiredInstallerPackage =getRequiredInstallerLPr(); ...
public String getPermissionControllerPackageName() { synchronized (mLock) { if (mPermissionsControllerPackageName == null) { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); } catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); ...
packages/apps/PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt data class FullStoragePackageState( val packageName: String, val user: UserHandle, val isLegacy: Boolean, val isGranted: Boolean ) override suspend fun loadDataAndPostValue(job: Job...
intent.setPackage(getPermissionControllerPackageName()); return intent; } 上面函数的作用主要是获取悬浮授权Activity组件信息:其实就是GrantPermissionsActivity,它是PackageInstaller系统应用里面的一个Activity,细节不在深究,可自己查询。总之这里会获得PackageInstaller的GrantPermissionsActivity,并且启动它。PackageInstaller负责...