p10 - notificaciones flotantes android oreo
Android cómo mostrar notificaciones en pantalla (4)
¿Has intentado crear el alertdialog con una bandera? El flag_show_when_locked debería hacer el truco. Por favor, consulte este hilo, debe encontrar una respuesta más detallada aquí. Widget de pantalla de bloqueo de Android
He estado trabajando en notificaciones push y puedo implementarlo y mostrarlo en la barra de estado, el problema al que me estoy enfrentando es que quiero mostrarlo incluso si el teléfono está bloqueado, debajo de la pantalla de bloqueo donde dice (" arrastre para desbloquear "), he visto notificaciones como esa pero no puedo encontrar ningún ejemplo para eso.
Ejemplo: Al igual que cuando recibió una llamada perdida, se mostrará debajo del botón de bloqueo en su 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);
Crear notificación utilizando 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());
Notificación push en pantalla bloqueada http://www.hongkiat.com/blog/android-lock-screen-notifications/
Cree notificaciones utilizando NotificationCompat.Builder, pero asegúrese de dar visibilidad al público 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
Las notificaciones que ha visto pueden ser en realidad widgets colocados en una pantalla de bloqueo de host de widgets personalizados.
Si observa el código fuente de la plataforma Android para InstallWidgetReceiver tan tarde como 4.4.3 aquí:
Verás esta nota del autor:
/ ** * Probablemente lo haremos más adelante, para permitir que las aplicaciones externas coloquen widgets, pero por ahora, * solo queremos exponer la acción para verificar en otra parte. * /
Y puede ver que InstallWidgetReceiver.java de hecho no es desarrollado por Google de la misma manera que InstallShortCutReceiver.java. Por lo tanto, parece que al menos hasta 4.4.3 no puede agregar widgets a la pantalla de bloqueo nativa de la misma manera que, por ejemplo, puede agregar un acceso directo a la pantalla de inicio usando InstallShortCutReceiver.
A menos que cree su propia aplicación de pantalla de bloqueo como un dispositivo de widgets y el usuario instale en lugar del nativo, es posible que no tenga suerte con un widget.
Sin embargo, otro enfoque es solo para nosotros una actividad que establece getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Esto mostrará su actividad si la pantalla está bloqueada o no. Al descartar esta actividad cuando la pantalla está bloqueada, se mostrará la pantalla bloqueada.