web-dev-qa-db-fra.com

Intention plein écran de ne pas démarrer l'activité mais affiche une notification sur Android 10

J'essaie de lancer l'activité d'un broadcastReceiver en utilisant le code suivant

 Intent i = new Intent(context, AlarmNotification.class);
 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // This is at least Android 10...

                NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

                if (mgr.getNotificationChannel(CHANNEL_WHATEVER)==null) {
                    mgr.createNotificationChannel(new NotificationChannel(CHANNEL_WHATEVER,
                            "Whatever", NotificationManager.IMPORTANCE_HIGH));
                }

                mgr.notify(NOTIFY_ID, buildNormal(context, i).build());

            }

private NotificationCompat.Builder buildNormal(Context context, Intent intent) {

    NotificationCompat.Builder b=
            new NotificationCompat.Builder(context, CHANNEL_WHATEVER);

    b.setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setSmallIcon(Android.R.drawable.ic_lock_idle_alarm)
            .setStyle(new NotificationCompat.BigTextStyle()
                    .bigText(TEXT)
            .setContentText(TEXT)
            .setFullScreenIntent(buildPendingIntent(context, intent), true);

    return(b);

}

private PendingIntent buildPendingIntent(Context context, Intent intent) {

    return(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}

Au début, tout fonctionne parfaitement bien. Mais si j'entre les paramètres de l'application, désactivez le canal de notification de CHANNEL_WHATEVER, puis réactivez-le. Plus tard, lorsque j'appelle NotificationManager.notify, il affiche la notification dans le tiroir de notification mais ne démarre pas l'activité. Si je supprime l'application et la réinstalle, cela fonctionne à nouveau correctement. Est-ce un bug de Android 10 sur lequel je devrais faire rapport, ou je peux faire quelque chose?)

5
Simple UX Apps

Android n'autorise pas que l'activité soit affichée même si vous utilisez une intention plein écran:

Sur certaines plates-formes, l'interface utilisateur du système peut choisir d'afficher une notification tête haute, au lieu de lancer cette intention, pendant que l'utilisateur utilise l'appareil.

1
greywolf82

Veuillez consulter mon article sur le support sur la façon de lancer une activité en plein écran pour OS 10. L'article explique également comment afficher la notification headsup et comment gérer les clics sur les boutons d'action.

https://medium.com/@dcostalloyd90/show-incoming-voip-call-notification-and-open-activity-for-Android-os-10-5aada2d4c1e4

0
Lloyd Dcosta