Мне удалось найти решение, но я не уверен, что это самый быстрый способ, но он работает по крайней мере.
Я обновил класс выше (NotificationUtils), изменив ожидающее намерение, которое передается кнопке действия:
Intent intent = new Intent(context, NotificationService.class);
intent.setAction(NotificationTasks.ACTION_UPDATE_NOTIFICATION_SETTINGS);
intent.putExtra("channel-id", channelId);
PendingIntent settingsIntent = PendingIntent.getService(context, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Затем я добавил класс обслуживания, который получает ожидающее намерение
public class NotificationService extends IntentService
{
public NotificationService() {super("NotificationIntentService");}
@Override
protected void onHandleIntent(@Nullable Intent intent)
{
NotificationTasks.executeTask(this, intent);
}
}
, который перенаправляет запрос в класс NotificationTasks, который обрабатывает запрос, и назначает его соответствующему методу на основе Действие умысла.
public static void executeTask(Context context, Intent intent)
{
switch(intent.getAction())
{
case ACTION_UPDATE_NOTIFICATION_SETTINGS:
updateNotificationSettings(context, intent);
break;
}
}
private static void updateNotificationSettings(Context context, Intent intent)
{
Intent updateNotificationSettingIntent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
updateNotificationSettingIntent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
updateNotificationSettingIntent.putExtra(Settings.EXTRA_CHANNEL_ID, intent.getStringExtra("channel-id"));
context.startActivity(updateNotificationSettingIntent);
}