如何以编程方式锁定/解锁手机:Android

时间:2013-07-29 12:25:58

标签: android keyguard

在我的应用程序中,我需要锁定和解锁手机。我搜索了它,我找到了许多答案,我尝试了但是没有人在工作。

我需要在onCreate()上解锁手机并在我完成活动时再次锁定手机。

你们知道做同样的方法吗?

谢谢朋友们。

修改

我尝试过的一些链接是:

How to display Activity when the screen is locked?

Android screen lock/ unlock programmatically

https://groups.google.com/forum/#!topic/android-developers/BOLjJTMO4zE

在我的应用程序中,我使用AlarmManager安排任务,然后启用手机锁。我的活动是在预定时间开始,但它没有解锁我的手机。当我手动解锁手机时,正在运行的活动正在出现

3 个答案:

答案 0 :(得分:10)

<{1>}在BroadcastReceiver设置wakelockactivity

执行此操作:

Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);

导入

import android.view.Window;
import android.view.WindowManager.LayoutParams;

它解决了我的问题,评价它: - )))

答案 1 :(得分:2)

自API 27起,FLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON已被弃用。而是在Manifest

中使用它
<activity
    android:name=".MyActivity"
    android:turnScreenOn="true"
    android:showWhenLocked="true"/>

或者,对于一般用法,在您的活动中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
        setTurnScreenOn(true);
        setShowWhenLocked(true);
    } else {
        Window window = getWindow();
        window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
    }
}

答案 2 :(得分:1)

试试这个......

@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
                    setContentView(R.layout.activity_main);
    }

    @Override
        protected void onPause() {
            super.onPause();
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);


        }