Biasanya, jika saya harus menginstal apk (katakanlah dari kartu SD), saya harus mengaktifkan "Sumber Tidak Dikenal" di pengaturan ponsel saya. Tetapi ketika saya mentransfer dan menginstal APK apa pun dari ponsel lain menggunakan "ShareIt", tidak ada izin seperti itu yang diperlukan oleh ponsel saya.
Bagaimana ShareIt dapat melewati izin ini?
Jawaban:
Saya melakukan sedikit penggalian dan dimungkinkan tanpa izin Sistem dari API 21 dan seterusnya https://developer.android.com/reference/android/content/pm/PackageInstaller.html .
Bahkan, ada contoh kode oleh Google yang menunjukkan cara melakukannya. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java
sumber
Jika aplikasi diinstal secara diam-diam (tanpa dialog instalasi yang biasa), mungkin aplikasi ini langsung memanggil
pm
, yaituPackageManager
, yang sebagai aplikasi sistem mendapat izinandroid.permission.INSTALL_PACKAGES
.Telepon harus di-rooting agar aplikasi dapat memanggil
pm
dalam konteks root, jika tidak Anda akan disambut dengan pesan "Baik pengguna xxxx maupun proses saat ini memiliki android.permission.INSTALL_PACKAGES".EDIT: Seperti yang ditunjukkan @Izzy dalam komentar,
android.permission.INSTALL_PACKAGES
juga diberikan untuk aplikasi yang diinstal/system
. Lihat di bawah komentar dan pertanyaan SO ini untuk wawasan lebih lanjut.sumber