How to lock/unlock phone programmatically : Android

限于喜欢 提交于 2019-11-26 16:32:45

问题


In my application, I need to lock and unlock phone. I searched for it, I found many answers, I tried them but no one is working.

I need to unlock phone on onCreate() and lock phone again while I'm finishing my activity.

Do you guys know any method to do the same?

Thanks friends.

EDIT:

Some links, that I have tried are:

How to display Activity when the screen is locked?

Android screen lock/ unlock programmatically

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

In my application I'm scheduling a task using AlarmManager and then enabling the phone lock. My activity is getting started on scheduled time but it not unlocking my phone. when I'm unlocking my phone manually running activity is getting appeared


回答1:


on BroadcastReceiver set up the wakelock and in the activity

Do This:

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 following

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

it solved my problem ,rate it up:-)))




回答2:


As of API 27, FLAG_SHOW_WHEN_LOCKED and FLAG_TURN_SCREEN_ON were deprecated. Instead use this in the Manifest

<activity
    android:name=".MyActivity"
    android:turnScreenOn="true"
    android:showWhenLocked="true"/>

Or, for general usage, in your activity:

@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);
    }
}



回答3:


Try this...

@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);


        }


来源:https://stackoverflow.com/questions/17923992/how-to-lock-unlock-phone-programmatically-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!