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