等到手机屏幕亮起来

时间:2018-05-28 12:27:03

标签: android broadcastreceiver android-service

我想要的是什么:

我正在开发一个应用程序,我希望在来电时显示对话框/弹出窗口。

我在日志中观察到我的来电启动和手机屏幕开启之间有轻微的延迟。第一个活动被触发,然后电话屏幕开启。

所以我希望在手机屏幕亮起后显示此对话框。总之,我想等到手机上电。

我尝试过的事情:

  • 我在BroadcastReceiver中使用了Asynctask

    protected Boolean doInBackground(Void... params) {
    
       PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        isScreenOn = powerManager.isInteractive();
        return  isScreenOn;
    }    
    

并遵循this回答。但它给了我编译时异常

未处理的异常java.util.concurrent.executionexception 即使在google上搜索了很多我也无法解决它。所以我用了另一种方法。

  • 我根据此link
  • 为手机屏幕状态创建了另一个*广播接收器

(*注意我已有来电广播接收器)

但我无法弄清楚来电广播接收器如何与手机屏幕广播接收器通信并等到手机屏幕亮起。

  • 我甚至尝试在现有的广播接收器中添加意图动作,但又不知道如何等到手机屏幕亮起来。

任何指针/建议?

1 个答案:

答案 0 :(得分:0)

在这个问题上苦苦挣扎之后,终于能够解决它了。如果有其他人在努力解决类似问题,请发布答案。

case TelephonyManager.CALL_STATE_RINGING: //Incoming Call Ringing

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //Calling activity to show dialog / popup window.
                }
            }, 1000);

就这么简单。呼!!