Лучший способ проверить, включает ли пользователь или отключает какие-либо разрешения?

#android

Вопрос:

У меня есть 2 кнопки, у первой кнопки есть этот идентификатор id="@ id/button_A" , а у второй кнопки есть этот идентификатор id="@ id/button_B"

button_A Я назвал его text="areNotificationsEnabled ( On )"

button_B Я назвал его text="canDrawOverlays ( Off )"

Я хочу, чтобы пользователь блокировал или разблокировал уведомление о приложении, поэтому обновите button_A его до включения или выключения. То же самое с button_B.

Я могу решить проблему с помощью onResume , но есть исключения, такие как пользователь может блокировать уведомления из строки состояния, не выходя из приложения или используя разделенный экран для включения или выключения canDrawOverlays

Я решил проблему с помощью обратного отсчета и проверяю каждые 250 миллисекунд, но я думаю, что это не лучший способ сделать это, как насчет изменения фокуса на окне или есть лучший способ?

Ответ №1:

Насколько я знаю, это невозможно в традиционной системе взглядов.

Тем не менее, это возможно с помощью Jetpack Compose, аккомпаниатора и некоторых экспериментальных api — см. Github Аккомпаниаторов для получения подробной информации и документов Android о том, как реализовать это в традиционных системах просмотра

 //inside a composable 
val cameraPermissionState = rememberPermissionState(android.Manifest.permission.CAMERA)
Text("camera permission enabled = ${cameraPermissionState.hasPermission}")
 

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