如何从AlarmReceiver打开屏幕?

时间:2015-08-06 14:26:39

标签: android

我有一个应用程序,需要在早上运行,唤醒屏幕,在晚上,它允许屏幕空白。我有一个扩展BroadcastReceiver的AlarmReceiver,它正在接收警报。但是在AlarmReceiver中我无法更改layoutparams,因为我无法调用getWindow()。

所以我的问题是,如何从AlarmReceiver中唤醒屏幕?我还尝试在MainActivity中使用受保护的void onActivityResult来到达窗口,这可以更改参数,但警报无法在设备休眠时运行意图。

谢谢!

1 个答案:

答案 0 :(得分:1)

从接收器开始一个新活动,它会在oncreate()中唤醒屏幕。

在收件人中:

@Override
public void onReceive(Context context, Intent intent) {
    Intent myIntent = new Intent(context, MainActivity.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(myIntent);
}

在活动中:

WakeLock screenLock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");

screenLock.acquire();

//later
screenLock.release();

清单需要包含:

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