402d
@402d
начинал с бейсика на УКНЦ в 1988

Проблема с кастомным пермишином. Как перезапросить разрешение?

Служба и клиент. Два приложения.
<service
            android:name=".NameService"
           .....
            android:permission="my.package.custom.PERMISSION"
            android:exported="true">
           .....
</service>

Для подключения к службе требую, чтобы в манифесте приложения клиенте была строка
<uses-permission android:name=""my.package.custom.PERMISSION" />


Это работает. Если клиент установлен после приложения службы.

Обновление службы приводит к
Caused by: java.lang.SecurityException: 
  at android.app.ContextImpl.bindServiceCommon (ContextImpl.java:1918)
  at android.app.ContextImpl.bindService (ContextImpl.java:1829)


обрамил биндинг службы в отлов исключения.

Теперь стоит задача а как правильно перезапросить свой пермишен программно ?

https://developer.android.com/training/permissions...
ближайшее по смыслу в документации. Но пока как сделать запрос не вижу. Упоминается как проверить.

upd
https://stackoverflow.com/questions/22934416/andro...
коментарии к ответу запутывают еще больше

upd2

в документации этого нет так как работать надо как обычно
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

                    if (checkSelfPermission("my.package.custom.PERMISSION")
                            != PackageManager.PERMISSION_GRANTED) {

                        mRequestPermission.launch("my.package.custom.PERMISSION");

                        return;
                    }

            }


Если в манифесте приложения службы объявление пермишена сделать как dangerous, то увидим диалог наподобии запроса на чтение файлов. В таком случае начинает работать . При уровне normal
возвращает notGranted.

Вариант с подписью разработчика мне не подходит. Служба задумывается как публичная.

Вопрос . Удобнее без лишних подтверждений есть способ ?
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы