我有一个应用程序,需要在早上运行,唤醒屏幕,在晚上,它允许屏幕空白。我有一个扩展BroadcastReceiver的AlarmReceiver,它正在接收警报。但是在AlarmReceiver中我无法更改layoutparams,因为我无法调用getWindow()。
所以我的问题是,如何从AlarmReceiver中唤醒屏幕?我还尝试在MainActivity中使用受保护的void onActivityResult来到达窗口,这可以更改参数,但警报无法在设备休眠时运行意图。
谢谢!
答案 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" />