gpt4 book ai didi

android - 如何在屏幕锁定时显示推送通知

转载 作者:太空狗 更新时间:2023-10-29 15:28:18 27 4
gpt4 key购买 nike

我有一个应用程序可以使用新的 gcm api 从自定义网络服务器接收推送通知。一切正常。但是,我也想在锁定屏幕上显示通知。

我四处搜索并找到了这篇文章,但它无济于事:Android how to show notification on screen

有什么简单的方法可以做到这一点吗?感谢您的帮助!

编辑//

这是一些代码。

在 GCMHandler 中,我使用这个 fragment 来显示通知:

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

在应用程序的主要 Activity 中,我使用了上面帖子中的代码:

    @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);
...
}

问题是,通知已显示,但在锁定屏幕上不可用。如果屏幕被锁定,则不会收到推送通知;(

最佳答案

试试这个,它会起作用。

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

}

关于android - 如何在屏幕锁定时显示推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com