¿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?
- El texto de la marquesina de notificación personalizada no funciona en Android
- ¿Se requiere setContentIntent (PendingIntent) en NotificationCompat.Builder?
- Programo una notificación local en un momento específico, utilizando el conmutador, pero su activación no a tiempo establecido
- ¿Cómo iniciar una notificación junto con AlarmManager?
- Android Notification Builder: Cómo setSound para que el sonido se reproduzca en un looper
- Cómo borrar la notificación de la bandeja de notificación al hacer clic en nokia-x
- ¿Cómo mostrar las notificaciones de Android en la pantalla, así como el icono de la barra de estado?
- Cambio de los botones de acción en una notificación
- Cancelar notificación después de que la aplicación se cierre desde el fondo
- Notificación persistente de la aplicación en ejecución en Android 4.3
- Tamaño grande del icono de la notificación del empuje de GCM
- La notificación no se elimina al hacer clic en el botón de acción incluso después de proporcionar el ID de notificación
- Notificación de cancelación automática no funciona para Android Lollipop
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);`