即使手机处于锁定模式也要显示的活动

Pra*_*mod 3 android themes dialog locked

我的问题类似于这个 如何唤醒Android设备并跳过屏幕锁定

我想从广播接收器中显示一个对话框,但Android API不允许我这样做,因此我使用从那里开始一个活动并将此活动的主题更改为主题.

现在我希望即使手机处于锁定模式/睡眠模式也能显示此活动.

屏幕我可以使用以下标志打开bu但是Key Guard(非安全)我必须手动解锁.我无法在锁定屏幕上看到我的窗口.

不同之处在于我没有使用全屏活动即

android:theme="@android:style/Theme.Dialog
Run Code Online (Sandbox Code Playgroud)

在我的代码我正在使用

Window w = getWindow();
w.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | 
           WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
           WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

Hua*_*ang 14

我不使用这些标志实现这一功能获得成功,但我没有使用成功激活锁定KeyguardLock.以下是我的工作:

public class DismissLock extends Activity {

PowerManager pm;
WakeLock wl;
KeyguardManager km;
KeyguardLock kl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Log.i("INFO", "onCreate() in DismissLock");
    pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    km=(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
    kl=km.newKeyguardLock("INFO");
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.ON_AFTER_RELEASE, "INFO");
    wl.acquire(); //wake up the screen
    kl.disableKeyguard();// dismiss the keyguard

    setContentView(R.layout.main);

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    wl.release(); //when the activiy pauses, we should realse the wakelock
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    wl.acquire();//must call this!
}

}
Run Code Online (Sandbox Code Playgroud)

当然,您仍需要在清单文件中声明权限.

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
Run Code Online (Sandbox Code Playgroud)