Obecny Android Permission System causes the following issue:Programowo zmienić Manifest - Android uprawnienia niestandardowe
App A określa pozwolenie niestandardową:
com.package.permission.READ_APP_DATA
Kiedy aplikacja B jest zainstalowany deklarowania zgody niestandardową, to jest oczywiste.
Jednakże, jeśli aplikacja zainstalowana A po app B, po czym uprawnienie to nie udzielone app B.
Choć może to nie być częstym zjawiskiem, z powodu aplikacja B często jest plugin aplikacji A, to oczywiście może wystąpić i robi dla mojej aplikacji.
Z aplikacjami SuperUser wyrażającymi zgodę na wprowadzenie ogólnego niestandardowego pozwolenia android.permission.ACCESS_SUPERUSER
może to być duży problem, jeśli użytkownik zdecyduje się na zmianę aplikacji SuperUser.
W celu obsługi tego problemu, mam zamiar użyć następującego kodu w moim wniosku o pozwolenie niestandardowego Mam zamiar rozpocząć oświadczając:
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;
Jak w tytule tego pytania: Czy ta metoda 'bezpieczny'? Czy istnieje sposób/root-hack, że manifest aplikacji może zostać zmieniony po zainstalowaniu, a uprawnienia programowo "dodane" do aplikacji B?
"Jeśli jednak aplikacja A jest zainstalowana po aplikacji B, to uprawnienie nie zostanie przyznane aplikacji B." - mają ten sam element '' w obu aplikacjach, szczególnie jeśli jest to uprawnienie "sygnatury". –
CommonsWare
@CommonsWare - Dzięki. Czy mogłabyś ewentualnie rozwinąć? Uważam, że to już robię, ale uprawnienia aplikacji B nadal nie są wykrywane/przyznawane. Zauważyłem, że połączony raport o błędzie został ostatecznie przypisany jako defekt. – brandall
"Wierzę, że już to robię" - twoje pytanie wskazuje, że tylko App A ma element '', a aplikacja B ma tylko element ''. Mówię, żebym dodał element '' do App B, więc kolejność instalacji nie ma już znaczenia. –
CommonsWare