最近遇上一个问题--客户想要给他们的apk默认加上运行时权限,分享一下我的解决方法。
Google其实在系统第一次开机的时候是会打开一些Apk的运行时权限的,加入的地方在alps/frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java,里面会有一系列的APK的默认运行时权限的赋予,比如GoogleGo(也就是Search),Email,Browser一类的,比如像Browser:
// Browser
PackageParser.Package browserPackage = null;
String defaultBrowserPackage = mService.getDefaultBrowserPackageName(userId);
if (defaultBrowserPackage != null) {
browserPackage = getPackageLPr(defaultBrowserPackage);
}
if (browserPackage == null) {
Intent browserIntent = new Intent(Intent.ACTION_MAIN);
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER);
browserPackage = getDefaultSystemHandlerActivityPackageLPr(
browserIntent, userId);
}
if (browserPackage != null
&& doesPackageSupportRuntimePermissions(browserPackage)) {
grantRuntimePermissionsLPw(browserPackage, LOCATION_PERMISSIONS, userId);
}
所以我们也可以在这个地方加入我们所需的权限,比如说我要加一个给CSDN的apk加入获取位置权限的话(我并不知道这个apk的包名,就举例是com.example.csdn&