Як "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.