App A定义了以下的自定义权限:
com.package.permission.READ_APP_DATA
当安装了应用程序B声明自定义权限时,它将被授予。
但是,如果安装了应用程序A. 后 应用B,然后权限是 不 授予应用B.
虽然这可能不常见,但由于应用程序B经常是应用程序A的插件,它当然可以发生并适用于我的应用程序。
随着SuperUser应用程序同意引入全球自定义许可 android.permission.ACCESS_SUPERUSER
如果用户决定切换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的权限?