Программно изменить манифест - пользовательские разрешения Android
Электрический токСистема разрешений Android вызывает следующую проблему:
Приложение A определяет пользовательское разрешение для:
com.package.permission.READ_APP_DATA
Когда установлено приложение B, объявляющее пользовательское разрешение, оно предоставляется.
Однако, если приложение A установленопосле приложение 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 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;
Согласно названию этого вопроса: это метод?безопасный'? Или есть способ / рут-хак, что приложение 's манифест может быть изменен после его установки и разрешения программнодобавил» к приложению Б?