Normalement, si je dois installer un apk (disons depuis une carte SD), je dois activer "Sources inconnues" dans les paramètres de mon téléphone. Mais lorsque je transfère et installe un fichier APK à partir d'un autre téléphone à l'aide de "ShareIt", aucune autorisation de ce type n'est requise par mon téléphone.
Comment ShareIt peut-il contourner cette autorisation?
Réponses:
J'ai fait un peu de fouille et c'est possible sans les autorisations système à partir d'API 21 https://developer.android.com/reference/android/content/pm/PackageInstaller.html .
En fait, il existe un exemple de code de Google qui montre comment le faire. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java
la source
Si les applications sont installées en mode silencieux (sans la boîte de dialogue d'installation habituelle), ces applications appellent vraisemblablement directement
pm
, c'estPackageManager
-à- dire qui, en tant qu'application système, est autoriséeandroid.permission.INSTALL_PACKAGES
.Le téléphone doit être enraciné pour que l'application puisse appeler
pm
dans un contexte racine, sinon vous serez accueilli avec le message "Ni l'utilisateur xxxx ni le processus actuel n'ont android.permission.INSTALL_PACKAGES".EDIT: Comme @Izzy l'a souligné dans le commentaire,
android.permission.INSTALL_PACKAGES
est également accordé aux applications installées sur/system
. Voir le commentaire ci-dessous et cette question SO pour plus d'informations.la source