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

#java #android #android-permissions #notification-listener

Вопрос:

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

 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 }
 

Ответ №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, и я не знаю способа (или если это вообще возможно) для более ранних версий.

Комментарии:

1. да, он работает для Android R(уровень api 30). но более ранняя версия.