Обычно, если мне нужно установить apk (скажем, с SD-карты), мне нужно включить «Неизвестные источники» в настройках моего телефона. Но когда я передаю и устанавливаю любой APK с другого телефона с помощью «ShareIt», такое разрешение не требуется для моего телефона.
Как ShareIt может обойти это разрешение?
Ответы:
Я немного покопался и это возможно без системных разрешений от API 21 и далее https://developer.android.com/reference/android/content/pm/PackageInstaller.html .
На самом деле, есть пример кода от Google, который показывает, как это сделать. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java
источник
Если приложения устанавливаются без вывода сообщений (то есть без обычного диалогового окна установки), предположительно, эти приложения вызывают напрямую
pm
, т. Е.PackageManager
Как системное приложение имеет разрешениеandroid.permission.INSTALL_PACKAGES
.Телефон должен быть рутирован, чтобы приложение могло звонить
pm
в корневом контексте, иначе вас встретит сообщение «Ни у пользователя xxxx, ни у текущего процесса нет android.permission.INSTALL_PACKAGES».РЕДАКТИРОВАТЬ: Как @Izzy указал в комментарии,
android.permission.INSTALL_PACKAGES
также предоставляется приложениям, установленным на/system
. Смотрите ниже комментарий и этот ТАК вопрос для большего понимания.источник