在我的应用程序中,我需要锁定和解锁手机。我搜索了它,我找到了许多答案,我尝试了但是没有人在工作。
我需要在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
安排任务,然后启用手机锁。我的活动是在预定时间开始,但它没有解锁我的手机。当我手动解锁手机时,正在运行的活动正在出现
答案 0 :(得分:10)
BroadcastReceiver
设置wakelock
和activity
执行此操作:
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_LOCKED
和FLAG_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);
}