我正在尝试创建一个唤醒手机并解锁的功能。为此,我使用了getWindow()函数,该函数在BroadcastReceivers中不起作用。我该如何解决?任何帮助将不胜感激!
public class ShakeToWake extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock mWakeLock = pm.newWakeLock((PowerManager.ACQUIRE_CAUSES_WAKEUP), "TapApp");
mWakeLock.acquire();
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mWakeLock.release();
}
}
答案 0 :(得分:2)
广播接收器不需要唤醒锁 - 在Android框架中隐含一个,否则操作系统无法首先调用BroadcastReceiver以便运行它并获取唤醒锁。活动和服务是需要唤醒锁的。而且活动有窗户,所以一切顺利。