Android 10 预置APP非系统签名赋予默认权限
代码位置:
alps\frameworks\base\services\core\java\com\android\server\pm\permission\DefaultPermissionGrantPolicy.java
代码:
加入预置的APP包名和所需权限。
private void grantDefaultSystemHandlerPermissions(int userId) {
Log.i(TAG, "Granting permissions to default platform handlers for user " + userId);
...
// Browser
String browserPackage = getKnownPackage(PackageManagerInternal.PACKAGE_BROWSER, userId);
if (browserPackage == null) {
browserPackage = getDefaultSystemHandlerActivityPackageForCategory(
Intent.CATEGORY_APP_BROWSER, userId);
if (!isSystemPackage(browserPackage)) {
browserPackage = null;
}
}
grantPermissionsToPackage(browserPackage, userId, false /* ignoreSystemPackage */,
true /*whitelistRestrictedPermissions*/, ALWAYS_LOCATION_PERMISSIONS);
//Webkey Test
String WebTest = "com.webkey";
grantPermissionsToPackage(WebTest, userId, false, true, ALWAYS_LOCATION_PERMISSIONS);
grantPermissionsToPackage(WebTest, userId, false, true, STORAGE_PERMISSIONS);
...
修改判断返回类型,排除非系统包返回“null”的情况,之间让他返回包名。
private String getDefaultSystemHandlerActivityPackage(Intent intent, int userId) {
ResolveInfo handler = mContext.getPackageManager().resolveActivityAsUser(
intent, DEFAULT_INTENT_QUERY_FLAGS, userId);
if (handler == null || handler.activityInfo == null) {
return null;
}
if (mServiceInternal.isResolveActivityComponent(handler.activityInfo)) {
return null;
}
String packageName = handler.activityInfo.packageName;
return isSystemPackage(packageName) ? packageName : packageName;
}
保存编译,齐活收工。