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.

Configuración de la notificación de la aplicación

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

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.