gpt4 book ai didi

android - DevicePolicyManager.lockNow();当安全设置设置为滑动/无时不会关闭屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:47 25 4
gpt4 key购买 nike

用户希望我的应用在使用后关闭屏幕。目前,我通过设备管理员权限和 DevicePolicyManager.lockNow() 实现了这一点,如果将安全设置设置为 PIN/Pattern/FaceUnlock 等,它就可以正常工作。

但是,如果使用 Slide/None,上述命令只会将用户带到主屏幕(或什么都不做),这是可以理解的,因为没有什么可“锁定”的。这种情况下有什么办法可以实现熄屏吗?如果重要的话,我的应用需要 SDK>=16。

所以我想我的问题是:应用程序如何可靠地关闭屏幕(我没有使用 wakelock,我正在使用 WindowManager - 在 onAttachedToWindow() 中标记 FLAG_TURN_SCREEN_ON

我的应用程序的“流程”是:
- Activity 在屏幕关闭时由 Intent 启动,显示在屏幕上的键盘锁/开关上方,并带有上述标志
- 用户主动关闭我的 Activity,我正在调用 lockNow()finish(),用户希望屏幕关闭。如果用户使用的是无/滑动锁,这将不起作用,而是显示用户的主屏幕

谢谢!

最佳答案

首先请参阅 here :

To control this policy, the device admin must have a "force-lock" tag in the "uses-policies" section of its meta-data.

The calling device admin must have requested USES_POLICY_FORCE_LOCK to be able to call this method; if it has not, a security exception will be thrown.

根据您获得的代码,here's很好地解释了您的情况可能出现的问题(当然,此处提供的任何代码都会有用!)。

我曾多次听说,调用两次代码 DevicePolicyManager.lockNow() 就可以解决问题 here's一种方法:

mDPM = (DevicePolicyManager)getApplicationContext().getSystemService("device_policy");
Handler handlerUI = new Handler();
handlerUI.postDelayed(new Runnable() {
@Override
public void run() {
mDPM.lockNow();
}
}, 200);
finish();
mDPM.lockNow();

Here我找到了同一事物的更详细版本:

Android DevicePolicyManager lockNow() problem
public class SMSMessagingActivity extends Activity {
/** Called when the activity is first created. */

public static DevicePolicyManager mDPM;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

}

public static void LockNow(){
mDPM.lockNow();
}

}

ComponentName devAdminReceiver; // this would have been declared in your class body
// then in your onCreate
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
devAdminReceiver = new ComponentName(context, deviceAdminReceiver.class);
//then in your onResume

boolean admin = mDPM.isAdminActive(devAdminReceiver);
if (admin)
mDPM.lockNow();
else Log.i(tag,"Not an admin");

希望最后的解决方法能够正常工作。

干杯

关于android - DevicePolicyManager.lockNow();当安全设置设置为滑动/无时不会关闭屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com