Как показывать push-уведомления при заблокированном экране

У меня есть приложение, которое получает push-уведомления от пользовательского веб-сервера, используя новый gcm api. Все работает нормально. Однако я хочу отображать уведомления и на экране блокировки.

Я погуглил и нашел этот пост, но он не поможет: Android, как показать уведомление на экране

Есть ли простой способ добиться этого? Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ //

Вот некоторый код.

В GCMHandler я использую этот фрагмент, чтобы показать уведомление:

   private void sendNotification() {
    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("message", message);
    intent.putExtra("pbid", pbid);
    intent.putExtra("alarm", alarm);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(alarm ? getString(R.string.txt_alarm_message_title) : getString(R.string.txt_info_message_title))
                    .setContentText(message);

    // play alarm tone
    if (alarm) playRingtone();

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}

А в основной активности приложения я использовал код из поста выше:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    setContentView(R.layout.act_main);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
...
}

Проблема в том, что уведомление отображается, но недоступно на экране блокировки. Если экран заблокирован, push-уведомление не будет получено ;(


person Robin    schedule 02.07.2014    source источник
comment
в чем проблема, когда вы попробовали ссылку. Предоставьте код, который вы пытались использовать с флагом   -  person Sree    schedule 02.07.2014
comment
Я разместил код в редактировании моего исходного сообщения.   -  person Robin    schedule 02.07.2014
comment
возможный дубликат BroadcastReceiver не вызывается, когда экран заблокирован в Android   -  person Eran    schedule 02.07.2014
comment
Спасибо. Я пробовал, но на Android 4.4.2 все равно не работает ;-( У вас есть другие предложения?   -  person Robin    schedule 04.07.2014
comment
@Robin: Здравствуйте, вы нашли ответ на этот вопрос?   -  person Huy Tower    schedule 24.08.2015


Ответы (1)


попробуйте это, это сработает.

int currentapiVersion = android.os.Build.VERSION.SDK_INT;

    if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        Notification noti = new Notification.Builder(
                getApplicationContext())
                .setContentTitle("New mail from " + " ")
                .setContentText(msg).setContentIntent(contentIntent)
                .setDefaults(1).setSmallIcon(R.drawable.gcm_cloud).build();
        PowerManager pm = (PowerManager) this
                .getSystemService(Context.POWER_SERVICE);

        WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
        wl.acquire(15000);

        mNotificationManager.notify(NOTIFICATION_ID, noti);

    } 
person RDY    schedule 01.04.2015
comment
Это только разбудит телефон. ОП спрашивает, как показать уведомление, когда экран заблокирован. - person T-D; 15.07.2015
comment
его отображение для уведомления экрана блокировки, просто попробуйте это. затем прокомментируйте. - person RDY; 15.07.2015
comment
Этот ответ неверен. Вопрос в том, как показать уведомление на странице экрана блокировки, а не в системе панели уведомлений. - person Huy Tower; 24.08.2015