8

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

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

你们知道有什么方法可以做到这一点吗?

谢谢朋友。

编辑:

我尝试过的一些链接是:

屏幕锁定时如何显示Activity?

Android屏幕锁定/以编程方式解锁

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

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

4

3 回答 3

15

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;
于 2014-09-08T13:43:34.473 回答
6

从 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);
    }
}
于 2018-02-09T19:37:23.620 回答
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);


        }
于 2013-12-20T06:48:04.267 回答