我试图关闭Android手机的屏幕。
我读了很多其他的讨论,并尝试了两种方式: Turn off screen on Android
事实上,我真正需要做的是启动锁定屏幕(要求输入PIN码)。我不确定该怎么做,也无法找到相关的文档,所以我试图关闭屏幕,希望当我重新打开手机时它会显示锁定屏幕。不幸的是,我无法测试我的理论。
第一个选项:
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();
第二个选项:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
第一个选项什么都没做,第二个选项导致我的应用程序崩溃。在堆栈调用中,我看到了一个可疑的日志:
Only the original thread that created a view hierarchy can touch its views.
我从另一个线程调用此代码,在后台运行(不是主线程)
这可能导致崩溃吗?我怎样才能克服这个问题呢?
有没有其他方法以编程方式启动锁定屏幕,而不必关闭屏幕?
答案 0 :(得分:1)
在第一个选项中,也添加ACQUIRE_CAUSES_WAKEUP。这会唤醒屏幕并显示锁定屏幕。
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Your Tag");
希望这会有所帮助。