Home » Android » android – Access application notification settings programmatically

android – Access application notification settings programmatically

Posted by: admin May 14, 2020 Leave a comment

Questions:

In an Android app, I have a button that I want to have the functionality of opening the App Notification settings (in Android settings).

Screenshot of Android's notification settings for the Camera application

I can open the Android settings with this

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

but I want to open directly on my app notification settings

Alternative

If there is a way to turn the “Block notifications” on and off programmatically that would be ok too.

How to&Answers:

There is no public API that will allow you to deep link into your application’s notification settings directly.

You can use Settings.ACTION_APPLICATION_DETAILS_SETTINGS to deep link to your application’s settings, but this will not take you directly to the notifications screen.

Any way to link to the Android notification settings for my app? has a solution that may work, but since it is not a part of the official API it is not guaranteed to work on all devices or for future versions of Android.

if there is a way to turn the “Block notificaations” on and off programatically that would be ok too

Absolutely not. Allowing an application to programmatically turn it’s notifications on and off defeats the purpose of giving the user control over turning notifications on and off.

Answer:

I know this is an old question, but for those finding it in the future: as of Oreo (API level 26) there is now an official deeplink Intent for a specific app’s notification settings.

Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName())
        .putExtra(Settings.EXTRA_CHANNEL_ID, MY_CHANNEL_ID);
startActivity(settingsIntent);

The EXTRA_CHANNEL_ID parameter is optional, and according to the docs, will “highlight that channel.” FWIW, as of Android 8.1, I can’t see that it makes any difference. If you are adding this parameter, ensure your Action is ACTION_CHANNEL_NOTIFICATION_SETTINGS.

Answer:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);