Как отфильтровать экран доступа к уведомлениям для моего приложения?

На данный момент я прошу разрешения на использование доступа к уведомлениям (служба прослушивателя уведомлений) следующим образом:

startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));

Это работает, но пользователь должен выбрать мое приложение из списка приложений.

введите здесь описание изображения

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

введите здесь описание изображения

Кто-нибудь знает, как правильно фильтровать?

Для настроек доступа к использованию я использую следующий код:

Intent myIntent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS, Uri.parse("package:" + getPackageName()));
startActivity(myIntent);

К сожалению, это не работает для настроек доступа к уведомлениям. Ошибка:

No Activity found to handle Intent { act=android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS dat=package:notificationmanager }

person PingItIn    schedule 27.04.2021    source источник


Ответы (1)


Нашел решение:

ComponentName componentName = new ComponentName(getPackageName(), YOUR_LISTENER_CLASS.class.getName());
Intent notificationAccessSettings = 
    new Intent(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_DETAIL_SETTINGS));

notificationAccessSettings.putExtra(Settings.EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME, componentName.flattenToString());
            
startActivity(notificationAccessSettings);

Это было введено только в API версии 30, и я не знаю способа (или возможно ли это вообще) для более ранних версий.

person PingItIn    schedule 28.04.2021