Служба и клиент. Два приложения.
<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.
Вариант с подписью разработчика мне не подходит. Служба задумывается как публичная.
Вопрос . Удобнее без лишних подтверждений есть способ ?