Есть ли способ программно попросить Android перезагрузить / повторно установить разрешения для моего приложения без переустановки приложения или перезагрузки устройства на некорневом устройстве?
Зачем мне это нужно?
Мое приложение (ClientApp) связывается со службой, объявленной в AIDL другим приложением (ServiceApp).ServiceApp - это стороннее приложение, которое я не могу изменить, и оно объявляет разрешение, которое требуется ClientApp для привязки к его службе, поэтому я добавил это разрешение в манифест моего ClientApp:
<uses-permission android:name="com.example.service.API" />
Когда я устанавливаю ServiceAppдо установки ClientApp все отлично работает.Однако, когда я сначала устанавливаю ClientApp, а затем устанавливаю ServiceApp, я получаю исключение при вызове bindService для службы ServiceApp в ClientApp:
java.lang.SecurityException: Not allowed to bind to service Intent { act=com.example.service.API pkg=com.example.service }
Насколько я понимаю, мое приложение не получает запрошенное разрешение на установку, поскольку оно незаявлено в системе до установки ServiceApp.Я могу исправить это на Android <5.0, объявив разрешение ServiceApp в манифесте ClientApp, но это невозможно в Android 5.0+ из-за соображений безопасности. </p>
Если бы я мог каким-то образом перезагрузить разрешения (что, очевидно, происходит при перезагрузке устройства) измой код я мог решить проблему.