Як "ShareIt", "Xender" тощо можуть встановити APK, не вимагаючи дозволу "невідомого джерела"?


9

Як правило, якщо мені потрібно встановити apk (скажімо, з SD-карти), мені потрібно ввімкнути "Невідомі джерела" в налаштуваннях телефону. Але коли я передаю та встановлюю будь-який APK з іншого телефону за допомогою "ShareIt", такий дозвіл моєму телефону не потрібно.

Як ShareIt може обійти цей дозвіл?


ShareIt був попередньо встановлений на вашому пристрої чи ви його встановили самостійно?
Іззі

Відповіді:


8

Я трохи копав, і це можливо без системних дозволів від 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


Кудо, щоб розкопати це, тепер, щоб дізнатись, чи використовував цей додаток це ...
Енді Ян

2
@beeshyams - Не дуже. Додаток не може зробити "безшумну" установку. Через наміри, що очікують на розгляд, на момент встановлення потрібне явне "натискання" користувача.
Нео

1
@Neo Чорт, тому я просто припустив мовчазну установку, коли написав свою відповідь ... Моя погана.
Енді Ян

2
Іншими новинами, пакет ShareIt здається дещо затуманеним, тому, хоча мої інструменти досягли успіху в генерації коду Java, нічого не видно із заглушок.
Енді Ян

Зачекайте - я використав інший інструмент, і я думаю, що міг би його отримати. Я відредагую вашу відповідь після підтвердження.
Енді Ян

4

Якщо програми встановлені безшумно (навіть поза звичайним діалоговим вікном встановлення), імовірно, ці програми безпосередньо дзвонять pm, тобто PackageManager, які як системний додаток мають дозвіл android.permission.INSTALL_PACKAGES.

Телефон має бути вкоріненим, щоб програма могла зателефонувати pmв кореневому контексті, інакше вас буде привітано повідомленням "Ні користувач xxxx, ні поточний процес не має android.permission.INSTALL_PACKAGES".

EDIT: Як @Izzy зазначив у коментарі, android.permission.INSTALL_PACKAGESтакож надається додаткам, встановленим на /system. Дивіться коментар нижче і це питання для отримання більш детальної інформації.


Зауважте, що я насправді не пробував ShareIt та аналізував, що він насправді робить, просто висуваючи найбільш ймовірну теорію. Якщо ви не вкорінилися, і це все-таки спрацювало, ми можемо мати набагато цікавішу проблему.
Енді Ян

1
@beeshyams У Китаї тут багато ринків сторонніх додатків зможуть встановлювати безшумну або автоматизовану установку. Перший спосіб описаний тут, і вони спочатку запитають дозволу на root; 2-е - попросити увімкнути послугу доступності, а потім автоматизувати натискання кнопок "встановити".
Енді Ян

1
Мій телефон не вкорінений. І він також не вимагав дозволів root. Але в Індії ShareIt - це дуже популярний метод встановлення програм через рівноправний.
Нео

1
@beeshyams Уникайте цієї програми та її жахливої ​​молі необхідних дозволів. Подумайте , натомість використовувати відкритий код Share через HTTP (доступний на F-Droid). Я жодним чином не пов’язаний із додатком.
Grimoire

1
@beeshyams Він працює з будь-яким пристроєм, підключеним до однієї мережі. Наскільки я можу сказати, хостом повинен бути Android, але будь-який пристрій може потім підключитися до тієї ж мережі та відвідати HTTP-адресу, показану в додатку, щоб завантажити файл (и).
Grimoire
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.