2011-09-16 13 views
19

He estado trabajando en las notificaciones push y puedo implementarlo y mostrarlo en la barra de estado, el problema al que me enfrento es que quiero mostrarlo incluso si el teléfono está bloqueado , Debajo de la pantalla de bloqueo donde dice ("arrastrar para desbloquear"), he visto notificaciones como esa, pero no puedo encontrar ningún ejemplo para eso.Android cómo mostrar la notificación en la pantalla

Ejemplo: Al igual que cuando recibió una llamada perdida, se mostrará debajo del botón de bloqueo en la pantalla.

Código:

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); 
+2

sin relación, que no necesariamente tienen que guardar todo como variables locales – CrackerJack9

+2

Esto no es posible en este momento. –

+0

@Copa ¿qué quieres decir? ¿Cuál es tu referencia?Tengo varias aplicaciones que muestran notificaciones de la manera que describe el OP (barra de notificaciones, mientras la pantalla está bloqueada). – CrackerJack9

Respuesta

3

¿Ha intentado crear el alertdialog con una bandera? El flag_show_when_locked debería hacer el truco. Por favor, consulte este hilo, aquí encontrará una respuesta más detallada. Android Lock Screen Widget

11

Crear Notificación mediante 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()); 

notificaciones push en la pantalla bloqueada http://www.hongkiat.com/blog/android-lock-screen-notifications/

+3

Esto no ayuda cuando se trata de mostrar la notificación en la pantalla de bloqueo del dispositivo, ¿verdad? –

+1

Sí, se mostrará una notificación incluso si el dispositivo está bloqueado – Naruto

+2

Lint dice que FLAG_ACTIVITY_NEW_TASK no es compatible con PendingIntent – auval

2

Las notificaciones que usted ha visto en realidad puede ser reproductores colocados en una pantalla de bloqueo personalizada anfitrión de widgets.

Si nos fijamos en el código fuente de la plataforma Android para InstallWidgetReceiver tan tarde como 4.4.3 aquí:

https://android.googlesource.com/platform/packages/apps/Launcher3/+/master/src/com/android/launcher3/InstallWidgetReceiver.java

Usted verá esta nota por el autor:

/** * Es probable que desarrollemos esto más tarde, para manejar aplicaciones externas para colocar widgets, pero por ahora, * solo queremos exponer la acción para verificar en otro lugar. */

Y se puede ver que InstallWidgetReceiver.java de hecho no es materializado por Google en la misma forma que es InstallShortCutReceiver.java. Parece que al menos hasta 4.4.3 no puede agregar widgets a la pantalla de bloqueo nativo de la misma manera que puede, por ejemplo, agregar un acceso directo a la pantalla de inicio usando InstallShortCutReceiver.

A menos que construya su propia aplicación de bloqueo de pantalla como un host de widgets y el usuario se instala en lugar del nativo, puede que no tenga suerte al usar un widget.

Otro enfoque, sin embargo, es solo nosotros una actividad que establece getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Esto mostrará su actividad ya sea que la pantalla esté bloqueada o no. Descartar esta actividad cuando la pantalla está bloqueada mostrará la pantalla bloqueada.

2

Crear Notificación mediante NotificationCompat.Builder pero asegúrese de poner a la visibilidad pública como

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 
Cuestiones relacionadas