Use this to check if notifications in general or channels are disabled, and bring the user to the appropriate settings:
In the calling method:
if (!notificationManager.areNotificationsEnabled()) { openNotificationSettings(); return; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && isChannelBlocked(CHANNEL_1_ID)) { openChannelSettings(CHANNEL_1_ID); return; }
In your class:
private void openNotificationSettings() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); startActivity(intent); } else { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); } } @RequiresApi(26) private boolean isChannelBlocked(String channelId) { NotificationManager manager = getSystemService(NotificationManager.class); NotificationChannel channel = manager.getNotificationChannel(channelId); return channel != null && channel.getImportance() == NotificationManager.IMPORTANCE_NONE; } @RequiresApi(26) private void openChannelSettings(String channelId) { Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, channelId); startActivity(intent); }
source share