Проверьте разрешение для BIND_ACCESSIBILITY_SERVICE

Я работаю над приложением для Android, которому необходимо использовать службу специальных возможностей Android.

У меня все работает:

  • Добавление разрешения на мою службу в manifest.xml
  • Расширение AccessibilityService и переопределение onAccessibilityEvent

Однако, когда я пытаюсь проверить, включил ли пользователь настройку/разрешение специальных возможностей, вызывая checkSelfPermission, он всегда возвращает «-1», также известный как PERMISSION_DENIED для BIND_ACCESSIBILITY_SERVICE.

Я что-то пропустил?

Можно ли проверить, включен ли параметр/разрешение или нет?

Является ли AccessibiliyService особым случаем, и вы не можете проверить разрешения как обычно?

Возможно, я могу обойти это, установив статическую переменную running=true в моем AccessbilityService, когда он запускается в первый раз, но это выглядит немного запутанно.

Заранее спасибо, я боролся с этим полдня :(

Я пробовал запрашивать разрешения:

Чтобы уточнить:

Я намеревался проверить «разрешение» службы специальных возможностей, чтобы узнать, включил ли его уже пользователь, и, если нет, правильно подсказать пользователю, что ему нужно включить через настройки.

0
0
2 300
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, вам не нужно проверять это разрешение. Он объявлен в сервисном теге, чтобы гарантировать, что только система Android может связать его (и запретить связывание с ним любых других сторонних приложений).

Могу я спросить, почему вы хотите проверить это разрешение как обычное разрешение?

Дополнительные сведения о AccessibilityService см. в документации: https://developer.android.com/guide/topics/ui/accessibility/service#manifest.

Обновление после уточнения:

Проверить, включена ли ваша служба специальных возможностей пользователем, может быть непросто. Насколько я знаю, это невозможно сделать через Accessibility API. Некоторые обходные пути можно найти здесь: Определить, включена ли моя служба специальных возможностей и тут: Android: как проверить, включена ли конкретная служба специальных возможностей

Спасибо за разъяснение, я думал, что это может быть что-то подобное, но не был уверен. Я проверяю «разрешения», чтобы узнать, нужно ли мне предлагать пользователю перейти к настройкам, чтобы включить службу специальных возможностей. В идеале, поэтому я не подсказываю пользователям, у которых он уже включен.

Phil Poore 22.07.2019 19:23

Проверить, включена ли ваша служба специальных возможностей, может быть сложно. Вы можете попытаться найти некоторые ответы в: stackoverflow.com/questions/18094982/… и других уже отвеченных темах.

MDikkii 23.07.2019 08:05

Другие вопросы по теме