广播接收器的getWindow()

时间:2014-06-02 01:52:51

标签: android window broadcastreceiver wakelock android-wake-lock

我正在尝试创建一个唤醒手机并解锁的功能。为此,我使用了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();
        }

}

1 个答案:

答案 0 :(得分:2)

广播接收器不需要唤醒锁 - 在Android框架中隐含一个,否则操作系统无法首先调用BroadcastReceiver以便运行它并获取唤醒锁。活动和服务是需要唤醒锁的。而且活动有窗户,所以一切顺利。