Wenn ich eine apk installieren muss (z. B. von einer SD-Karte), muss ich normalerweise "Unbekannte Quellen" in den Einstellungen meines Telefons aktivieren. Wenn ich jedoch APK mit "ShareIt" von einem anderen Telefon übertrage und installiere, ist für mein Telefon keine solche Berechtigung erforderlich.
Wie kann ShareIt diese Berechtigung umgehen?
Antworten:
Ich habe ein bisschen gegraben und es ist ohne Systemberechtigungen ab API 21 möglich https://developer.android.com/reference/android/content/pm/PackageInstaller.html .
Tatsächlich gibt es ein Codebeispiel von Google, das zeigt, wie es geht. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java
quelle
Wenn die Apps unbeaufsichtigt installiert werden (ohne den üblichen Installationsdialog), rufen diese Apps vermutlich direkt auf
pm
, dhPackageManager
welche als System-App die Berechtigung trägtandroid.permission.INSTALL_PACKAGES
.Das Telefon
pm
muss gerootet sein, damit die App in einem Root-Kontext aufrufen kann. Andernfalls wird die Meldung "Weder Benutzer xxxx noch aktueller Prozess haben android.permission.INSTALL_PACKAGES" angezeigt.BEARBEITEN: Wie @Izzy im Kommentar hervorhob,
android.permission.INSTALL_PACKAGES
wird es auch Apps gewährt, auf denen installiert wurde/system
. Weitere Informationen finden Sie im folgenden Kommentar und in dieser SO-Frage .quelle