Обработка разрешений для привилегированных системных приложений - PullRequest
1 голос
/ 24 апреля 2019

Я пишу приложение для Android, которое будет работать на нестандартном оборудовании с ПЗУ, которым я управляю.

Устройство будет запускать одно приложение (как модуль запуска), и после того, как устройство развернуто, я (как правило) больше не имею к нему доступа. Приложение также поддерживает само обновление.

Как таковой, мне нужен способ для правильной обработки разрешений для приложения, то есть разрешения должны предоставляться автоматически (включая опасные), если они когда-либо добавляются в манифест.

Теперь приложение подписывается тем же сертификатом, что и ОС Android, работающая на устройстве, и приложение помещается в каталог priv-app, когда устройство мигает. Я предполагал, что это автоматически предоставит разрешения, но это не так.

Я попытался добавить android:sharedUserId="android.uid.system" в манифест, и это действительно предоставляет все разрешения, но поскольку уже существует довольно много устаревших устройств «в дикой природе», добавление этой опции делает так, чтобы приложение больше не могло обновляться (выдает ошибку INSTALL_FAILED_SHARED_USER_INCOMPATIBLE).

Итак, каков наилучший способ обработки разрешений в этом случае? Есть ли здесь какая-то другая магия вуду? Стоит ли просто прикусить пулю, добавить опцию sharedUserId и вручную обновить все устройства (нежелательно, но возможно)?

...