App A 定义了以下的自定义权限:
com.package.permission.READ_APP_DATA
当应用 B 安装声明自定义权限时,它被授予。
但是,如果应用 A 是在应用 B 之后安装的,则权限不会授予应用 B。
虽然这可能并不常见,但由于应用程序 B 通常是应用程序 A 的插件,它当然可以发生并且适用于我的应用程序。
如果超级用户应用程序同意引入全局自定义权限,android.permission.ACCESS_SUPERUSER
那么如果用户决定切换超级用户应用程序,这可能是一个大问题。
为了处理这个问题,我打算在我的应用程序中使用以下代码来获得我即将开始声明的自定义权限:
checkPermissions(this, getCallingActivity().getPackageName()); // get the package name from the sender first
private boolean checkPermissions(Context context, String callingPackage) {
final List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (PackageInfo pi : apps) {
if (pi.packageName.equals(callingPackage)) {
String[] permissions = pi.requestedPermissions;
if (permissions != null) {
for (String permission : permissions) {
if (permission.equals("com.package.permission.READ_APP_DATA")) {
return true;
}
}
}
}
}
return false;
根据这个问题的标题:这种方法“安全”吗?或者是否有一种方法/root-hack 可以在安装应用程序清单并将权限以编程方式“添加”到应用程序 B 后对其进行更改?