安卓:收到新通知时如何打开屏幕?



我几乎尝试了所有方法,但是当在后台模式下收到新通知时,我不明白如何打开手机屏幕。

我正在使用 FCM。当应用程序在后台运行时,收到的通知由系统托盘管理。收到新内容时,如何要求系统托盘打开屏幕?谢谢!

最后,答案就在这里。

如果您使用 Firebase API 将通知从服务器发送到设备,请记住,扩展版 FirebaseMessagingService中的onMessageReceived()方法仅在您发送如下通知时在后台调用:

$msg = array
(
'body'  => $newsObj['description'],
);
$fields = array
(
'registration_ids'  => $registrationIds,
'data'          => $msg,
'priority'  => "high"
);

你看,如果你把">data"属性更改为">notification",只有当应用在FOREGROUND中时,才会调用onMessageReceived()方法。

要在收到新通知时打开屏幕,请将以下代码放入您的onMessageReceived()方法中:

// Turn on the screen for notification
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean result= Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT_WATCH&&powerManager.isInteractive()|| Build.VERSION.SDK_INT< Build.VERSION_CODES.KITKAT_WATCH&&powerManager.isScreenOn();
if (!result){
PowerManager.WakeLock wl = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MH24_SCREENLOCK");
wl.acquire(10000);
PowerManager.WakeLock wl_cpu = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MH24_SCREENLOCK");
wl_cpu.acquire(10000);
}

在 AndroidManifest 中.xml:

<uses-permission android:name="android.permission.WAKE_LOCK" />

就这样!

试试这个

你必须做一件事,当你显示通知时,你必须广播这个意图。在onMessageReceived(RemoteMessage remoteMessage)FirebaseMessagingService扩展类的方法中生成通知之后

Intent in=new Intent(Intent.ACTION_POWER_CONNECTED);
getActivity().sendBroadcast(in);

相关内容

  • 没有找到相关文章

最新更新