首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:当收到新通知时,如何打开屏幕?

Android:当收到新通知时,如何打开屏幕?
EN

Stack Overflow用户
提问于 2017-06-07 18:26:12
回答 2查看 5.6K关注 0票数 3

我几乎什么都试过了,当在后台模式下收到新的通知时,我不知道如何打开电话屏幕。

我在用FCM。当app处于后台时,接收到的通知由系统托盘管理。当收到新的信息时,我如何让系统托盘打开屏幕?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-06-07 22:39:31

最后,答案就在这里。

如果您正在使用Firebase将通知从服务器发送到设备,记住扩展FirebaseMessagingService中的方法只有在发送这样的通知时才在后台调用:

代码语言:javascript
运行
复制
                        $msg = array
                        (
                            'body'  => $newsObj['description'],
                        );
                        $fields = array
                        (
                            'registration_ids'  => $registrationIds,
                            'data'          => $msg,
                            'priority'  => "high"
                        );

您可以看到,如果您将"data“属性更改为方法,则只有当应用程序位于前台中时,才会调用该方法。

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

代码语言:javascript
运行
复制
        // 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中:

代码语言:javascript
运行
复制
    <uses-permission android:name="android.permission.WAKE_LOCK" />

就这样!

票数 8
EN

Stack Overflow用户

发布于 2017-06-07 18:54:11

试试这个

您必须做一件事,当您显示通知时,您必须在onMessageReceived(RemoteMessage remoteMessage) FirebaseMessagingService 扩展类方法中广播该intent.after生成通知。

代码语言:javascript
运行
复制
Intent in=new Intent(Intent.ACTION_POWER_CONNECTED);
        getActivity().sendBroadcast(in);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44420193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档