Android – Cómo permitir / activar la configuración de "notificaciones flotantes" como predeterminada para la aplicación mediante código
Quiero habilitar la notificación flotante usando Android Code.Normally los usuarios no sabían acerca de la configuración. Así que necesito permitir esto por defecto.
Malas noticias tengo miedo.
Como probablemente sepa, esto requiere el permiso SYSTEM_ALERT_WINDOW .
Desde Android M google ha comenzado a bloquear este permiso para reducir el desorden. Lo que es un poco inusual en este permiso es que el usuario debe ir a una pantalla de configuración real El ordinario flujo de permisos de Android M no funciona para esto . Para citar la API:
Si la aplicación apunta al nivel 23 de la API o superior, el usuario de la aplicación debe conceder explícitamente este permiso a la aplicación a través de una pantalla de administración de permisos
Utilice la clase Configuración para comprobar si ya tiene el permiso y cuando no lo hace, debe explicar y dirigir al usuario a la pantalla de configuración correspondiente mediante la intención :
Intent i = new Intent(); i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + context.getPackageName())); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); context.startActivity(i);
Esto sólo debería afectar a los dispositivos con más de 23 años ya que los dispositivos más antiguos deberían obtener el permiso automáticamente, pero no dependen de la comprobación de SDK_INT, dependen en cambio de canDrawOverlays , ya que hay excepciones para algunos dispositivos pre-marshmallow
NotificationCompat.Builder mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.some_small_icon) .setContentTitle("Title") .setContentText("This is a test notification with MAX priority") .setPriority(Notification.PRIORITY_MAX);//You need this
Echa un vistazo a esta página https://material.io/guidelines/patterns/notifications.html#notifications-settings-priority