web-dev-qa-db-fra.com

Accéder aux paramètres de notification des applications par programme

Dans une application Android, je souhaite utiliser un bouton qui permet d'ouvrir les paramètres de notification des applications (dans les paramètres Android).

 Screenshot of Android's notification settings for the Camera application

Je peux ouvrir les paramètres Android avec cette

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

mais je veux ouvrir directement sur les paramètres de notification de mon application

Alternative

S'il existe un moyen d'activer et de désactiver les "notifications de blocage" par programmation, cela conviendra également.

7
Ric

Il n'y a pas d'API publique qui vous permette d'établir un lien direct avec les paramètres de notification de votre application.

Vous pouvez utiliser Settings.ACTION_APPLICATION_DETAILS_SETTINGS pour créer un lien profond avec les paramètres de votre application, mais cela ne vous mènera pas directement à l'écran des notifications.

Un moyen de créer un lien vers les paramètres de notification Android pour mon application? a une solution qui peut fonctionner, mais comme il ne fait pas partie de l'API officielle, il n'est pas garanti qu'il fonctionne sur tous les appareils ni sur les futures versions d'Android.

s'il y a un moyen d'activer et de désactiver les "notifications de bloc" par programmation, ce serait bien aussi

Absolument pas. Le fait de permettre à une application d'activer et de désactiver par programme ses notifications empêche de donner à l'utilisateur le contrôle de l'activation et de la désactivation des notifications.

9
Tanis.7x

Je sais que c’est une vieille question, mais pour ceux qui la trouveront à l’avenir: à partir d’Oreo (niveau 26 de l’API), il existe maintenant un lien profond officiel Intent pour les paramètres de notification d’une application spécifique.

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);

Le paramètre EXTRA_CHANNEL_ID est facultatif et, selon les documents , "mettront ce canal en surbrillance". FWIW, depuis Android 8.1, je ne peux pas voir que cela fait une différence.

7
String
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);
0
Makvin