Android, как показать уведомление на экране

Я работаю над push-уведомлениями, и я могу реализовать его и отобразить на панели состояния, проблема, с которой я сталкиваюсь, заключается в том, что я хочу отображать ее, даже если телефон заблокирован. Под экраном блокировки, где говорится (" Перетащить, чтобы разблокировать "), я видел такие уведомления, но не могу найти на этом никакого примера.

Пример. Так же, как когда вы получили пропущенный вызов, он отобразит его под кнопкой блокировки на вашем экране.

Код:

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

Solutions Collecting From Web of "Android, как показать уведомление на экране"

Вы пытались создать alertdialog с флагом? Flag_show_when_locked должен делать трюк. Пожалуйста, обратитесь к этой теме, вы должны найти более подробный ответ здесь. Виджет экрана Android Lock

Создать уведомление с помощью NotificationCompat.Builder

  NotificationCompat.Builder mBuilder = новый NotificationCompat.Builder (это)
             .setSmallIcon (R.drawable.ic_launcher) // значок уведомления
             .setContentTitle («Уведомление!») // название для уведомления
             .setContentText ("Hello word") // сообщение для уведомления
             .setAutoCancel (истина);  // очистить уведомление после клика
 Intent intent = новый Intent (это, MainActivity.class);
 PendingIntent pi = PendingIntent.getActivity (это, 0, намерение, Intent.FLAG_ACTIVITY_NEW_TASK);
 mBuilder.setContentIntent (р);
 NotificationManager mNotificationManager =
                     (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE);
 MNotificationManager.notify (0, mBuilder.build ());

Push Notification на заблокированном экране http://www.hongkiat.com/blog/android-lock-screen-notifications/

Уведомления, которые вы видели, на самом деле могут быть виджетами, размещенными на специальном экране блокировки хоста виджетов.

Если вы посмотрите на исходный код платформы Android для InstallWidgetReceiver в 4.4.4:

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

Вы увидите эту заметку автора:

/ ** * Мы, скорее всего, воспользуемся этим позже, чтобы разрешить внешним приложениям размещать виджеты, но пока * мы просто хотим разоблачить действие для проверки в другом месте. * /

И вы можете видеть, что InstallWidgetReceiver.java на самом деле не сглажен google так же, как InstallShortCutReceiver.java. Таким образом, по крайней мере, до 4.4.3 вы не можете добавлять виджеты в собственный экран блокировки таким же образом, что вы можете, например, добавить ярлык на рабочий стол с помощью InstallShortCutReceiver.

Если вы не создадите собственное приложение lockscreen в качестве хоста виджета, а пользователь установит вместо него, вам может быть не повезло с помощью виджета.

Другой подход, однако, заключается в том, что мы просто делаем операцию, которая устанавливает getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Это покажет вашу активность, заблокирован ли экран или нет. Отключение этой активности, когда экран заблокирован, отобразит заблокированный экран.

Создайте уведомление с помощью NotificationCompat.Builder, но не заставляйте публиковать

 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