活动未通过LockScreen显示

时间:2014-06-10 10:14:55

标签: android

我正在尝试通过锁屏显示活动。 这是我的应用程序中的第二个,第一个实际上没有任何问题。 我正在使用唤醒锁:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
    //mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    mWakeLock.acquire();

我正在使用活动本身的预期代码

"getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

我甚至尝试过这个选项:

WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
    lp.flags |= WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
    lp.flags |= WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
    lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
    getWindow().setAttributes(lp);

这两项活动之间的最大区别在于它们的展示时间。 第一个(那个正在工作的那个)对android.provider.Telephony.SMS_RECEIVED广播做出反应,而第二个对Intent.ACTION_POWER_CONNECTED广播做出反应。

为什么第二个不起作用?锁屏不会被移除以显示我的活动,如果我实际滑动锁屏,我的活动就会显示在其下方。 实际上插电能力是不是可以拦截?

/编辑:

我确实发现了两个活动之间的区别: 实际上没有工作的人有一个基于对话主题的主题。

<style name="ThemeWithCorners" parent="android:Theme.Holo.Light.Dialog">

如果我删除它,它工作得很好,所以现在的问题是如何让基于对话主题的活动以相同的方式运行???

/ EDIT2: 经过一些谷歌搜索和搜索,我发现这段代码有效:

KeyguardManager keyMgr = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
    KeyguardManager.KeyguardLock keyLock = keyMgr.newKeyguardLock(TAG);
    keyLock.disableKeyguard();

糟糕的是newKeyguardLock()方法已被弃用。所以它在将来的版本中可能不再起作用(在4.1.2上测试)。 如果有人知道正确的方式来完成同样的壮举吗?

0 个答案:

没有答案
相关问题