Я работаю над 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);
Вы пытались создать 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:
Вы увидите эту заметку автора:
/ ** * Мы, скорее всего, воспользуемся этим позже, чтобы разрешить внешним приложениям размещать виджеты, но пока * мы просто хотим разоблачить действие для проверки в другом месте. * /
И вы можете видеть, что 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