¿Algún modo de vincular a la configuración de notificación de Android para mi aplicación?

¿Hay alguna forma de lanzar una intención para llegar a la pantalla de configuración de notificaciones de Android para mi aplicación (foto abajo)? O una manera fácil que puedo hacer un elemento de PreferenceScreen que sólo conduce aquí en un clic?

Introduzca aquí la descripción de la imagen

Lo siguiente funcionará en Android 5.0 (Lollipop) y superior:

Intent intent = new Intent(); intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); //for Android 5-7 intent.putExtra("app_package", getPackageName()); intent.putExtra("app_uid", getApplicationInfo().uid); // for Android O intent.putExtra("android.provider.extra.APP_PACKAGE", getPackageName()); startActivity(intent); 

Notas: Esto no es oficialmente compatible con Android 5-7, pero funciona muy bien. Es oficialmente compatible con Android O. Este código no es compatible con versiones de Android antes de la versión 5.0.

Yo uso este código (kitkat y versiones siguientes):

 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Intent intent = new Intent(); intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); intent.putExtra("app_package", getActivity().getPackageName()); intent.putExtra("app_uid", getActivity().getApplicationInfo().uid); startActivity(intent); } else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse("package:" + getActivity().getPackageName())); startActivity(intent); } 

Me fusioné la solución de Sergei y Shhp para apoyar todos los casos:

  Intent intent = new Intent(); if(android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1){ intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); intent.putExtra("android.provider.extra.APP_PACKAGE", context.getPackageName()); }else if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); intent.putExtra("app_package", context.getPackageName()); intent.putExtra("app_uid", context.getApplicationInfo().uid); }else { intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse("package:" + context.getPackageName())); } context.startActivity(intent);` 
  • Android: ¿muestra notificaciones incluso si está inhabilitada para la aplicación?
  • Android Parse Push Notification No se muestra Icono en Marshmallow
  • Notificación android gran imagen no funciona
  • Botones grises al agregar acciones a notificaciones en Jelly Bean
  • Notificaciones de usuarios - ¿Cómo recuperar un notification_id perdido de GCM?
  • ¿Cómo actualizar la notificación con RemoteViews?
  • incapaz de transferir datos a través de la intención durante la notificación
  • Java.lang.NullPointerException: Intenta invocar el método de interfaz 'java.util.Iterator java.lang.Iterable.iterator ()' al iniciar una notación
  • ¿Por qué NotificationManagerCompat :: cancelAll () obtiene SecurityException?
  • Android Notification.Builder: muestra una notificación sin icono
  • Cómo manejar correctamente startForegrounds dos notificaciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.