1. 控制界面
在设置–》应用–》Email–》权限,然后可以看到最直观的界面显示 AppPermissionsFragment.java
这个界面是在packages/apps/PackageInstaller 里面来进行控制。
1. com.android.packageinstaller.permission.ui.AppPermissionsFragment#onCreate
在初始化过程中,会创建AppPermissions
@Override
public void onCreate(Bundle savedInstanceState) {
...
mAppPermissions = new (activity, packageInfo, null, true, new Runnable() {
@Override
public void run() {
getActivity().finish();
}
});
loadPreferences();
}
- com.android.packageinstaller.permission.model.AppPermissions#AppPermissions 接下来直接进入到
- com.android.packageinstaller.permission.model.AppPermissions#loadPermissionGroups
private void loadPermissionGroups() {
...
if (mFilterPermissions != null) {
...
} else {
for (String requestedPerm : mPackageInfo.requestedPermissions) {
if (hasGroupForPermission(requestedPerm)) {
continue;
}
// create AppPermissionGroup according to the package info
`AppPermissionGroup group = AppPermissionGroup.create(mContext,
mPackageInfo, requestedPerm);`
if (group == null) {
continue;
}
mGroups.add(group);
}
}
...
}
- com.android.packageinstaller.permission.model.#create(android.content.Context, android.content.pm.PackageInfo, java.lang.String)
这个方法中,首先会根据permissionName收集permissionInfo
try {
permissionInfo = context.getPackageManager().getPermissionInfo(permissionName, 0);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
static PermissionInfo generatePermissionInfo(
BasePermissio