以编程方式解锁屏幕并显示活动

时间:2013-03-13 18:36:43

标签: java android

当屏幕被锁定时,我有一个活动及其前景。这个活动有一个按钮,当按下它时,它应该将CALL LOG活动带到前台,但我只能获得解锁屏幕活动(见下图)。但是,如果我解锁该屏幕,我的第一个活动显示是CALL LOG,但它应该在没有首先解锁屏幕的情况下可见。希望我很清楚。 (见下面的照片)

我检查了How to display Activity when the screen is locked?,但它没有按预期工作!

基本上这是我的代码:

@Override
public void onClick(View v) {

    switch(v.getId()) {

    case R.id.missed_call_IV:
        //finish();
        Intent showContacts = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
        startActivity(showContacts);
        Window w;
        w = getWindow();
        w.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        w.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        w.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        break;
    }
}

image1 image2

1 个答案:

答案 0 :(得分:3)

使用程序中的KeyGuardLock

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock keyguard = km.newKeyguardLock("MyApp");

解锁屏幕

keyguard.disableKeyguard();

并且在完成任务后不要忘记再次锁定

keyguard.reenableKeyguard();

在清单中使用以下权限

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" >
</uses-permission>