web-dev-qa-db-fra.com

Android comment afficher la notification à l'écran

J'ai travaillé sur les notifications Push et je suis en mesure de les mettre en œuvre et de les afficher dans la barre d'état. Le problème auquel je suis confronté est que je veux les afficher même si le téléphone est verrouillé, sous l'écran de verrouillage où il est indiqué (" faites glisser pour déverrouiller "), j'ai vu des notifications comme ça, mais je ne trouve aucun exemple à ce sujet.

Exemple: Tout comme lorsque vous avez reçu un appel manqué, il l'affichera sous le bouton de verrouillage de votre écran.

Code:

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon_launcher;
CharSequence tickerText = "MyApplication";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE|Notification.DEFAULT_LIGHTS;;
CharSequence contentTitle = this.title;
CharSequence contentText = this.message;
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(NOTICE_ID, notification);
28
user606669

Avez-vous essayé de créer le dialogue d'alerte avec un indicateur? Le flag_show_when_locked devrait faire l'affaire. Veuillez vous référer à ce fil, vous devriez trouver une réponse plus détaillée ici. Widget d'écran de verrouillage Android

5
VirtualProdigy

Créer une notification à l'aide de NotificationCompat.Builder

NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher) // notification icon
            .setContentTitle("Notification!") // title for notification
            .setContentText("Hello Word") // message for notification
            .setAutoCancel(true); // clear notification after click
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,0,intent,Intent.FLAG_ACTIVITY_NEW_TASK);
mBuilder.setContentIntent(pi);
NotificationManager mNotificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());

Notification push sur écran verrouillé http://www.hongkiat.com/blog/Android-lock-screen-notifications/

15
Kirit Vaghela

Créez une notification à l'aide de NotificationCompat.Builder mais assurez-vous de mettre la visibilité au public comme

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder
        .setContentTitle("Title")
        .setContentText("content")
        .setSmallIcon(R.mipmap.ic_launcher)
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);//to show content in lock screen
3
Mohamad Bdour

Les notifications que vous avez vues peuvent en fait être des widgets placés sur un écran de verrouillage d'hôte de widget personnalisé.

Si vous regardez le code source de la plateforme Android pour InstallWidgetReceiver aussi tard que 4.4.3 ici:

https://Android.googlesource.com/platform/packages/apps/Launcher3/+/master/src/com/Android/launcher3/InstallWidgetReceiver.Java

Vous verrez cette note de l'auteur:

/ ** * Nous allons probablement étoffer cela plus tard, pour gérer le fait d'autoriser les applications externes à placer des widgets, mais pour l'instant, * nous voulons simplement exposer l'action pour la vérifier ailleurs. * /

Et vous pouvez voir que InstallWidgetReceiver.Java n'est en fait pas étoffé par Google de la même manière que InstallShortCutReceiver.Java. Il semble donc qu'au moins jusqu'à la version 4.4.3, vous ne pouvez pas ajouter de widgets à l'écran de verrouillage natif de la même manière que vous pouvez par exemple ajouter un raccourci vers l'écran d'accueil en utilisant InstallShortCutReceiver.

Sauf si vous créez votre propre application de verrouillage d'écran en tant qu'hôte de widget et que l'utilisateur installe à la place du natif, vous risquez de ne pas avoir de chance d'utiliser un widget.

Une autre approche consiste cependant à nous simplement une activité qui définit getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Cela affichera votre activité, que l'écran soit verrouillé ou non. La désactivation de cette activité lorsque l'écran est verrouillé affichera l'écran verrouillé.

2
Sani Elfishawy

J'ai corrigé cela en ajoutant cette ligne au générateur de notifications

builder.setOngoing(true);

Cela rendra également la notification non annulable par l'utilisateur, mais cela résout le problème.

Crédits à: Marian Klühspies ( link )

1
Alex Misiulia