可以从非管理员应用程序调用 DevicePolicyManager.lockNow() 吗?

Posted

技术标签:

【中文标题】可以从非管理员应用程序调用 DevicePolicyManager.lockNow() 吗?【英文标题】:Can DevicePolicyManager.lockNow() be called from a non-admin app? 【发布时间】:2017-07-11 16:03:52 【问题描述】:

这些记录了来自管理员应用程序对lockNow() 的使用。

https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#lockNow(int)

http://blogs.quovantis.com/android-device-administration-apis/

基本流程是:

    创建DeviceAdminReceiver

    在清单中注册接收器,并为其提供DEVICE_ADMIN_ENABLED 操作

    在 xml 文件中声明安全策略

    onCreate() 方法中初始化 DevicePolicyManager 对象

    致电DevicePolicyManager.lockNow()

而且效果很好。但是,我希望能够在不使我的应用程序成为管理员的情况下锁定屏幕,也许可以通过调用lockNow() 作为隐含意图。这可能吗?

【问题讨论】:

【参考方案1】:

只有具有正确权限的设备管理员才能调用该 API。

鉴于此,您必须:

    创建一个具有USES_POLICY_FORCE_LOCK 权限的设备管理员应用,并根据您选择的意图触发。 使您现有的应用成为具有USES_POLICY_FORCE_LOCK 权限的设备管理员。 查找具有这些要求的现有应用程序。但我一个都不熟悉。

【讨论】:

以上是关于可以从非管理员应用程序调用 DevicePolicyManager.lockNow() 吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Spring 中从非事务方法调用事务方法?

如何从非提升的 c# 程序更改系统时间

从非托管 c++ 调用 C# 函数(通过托管包装器)

从非 Fragment/Activity 类调用 registerForActivityResult

Worklight - 使用 URL 从非 Worklight 应用程序调用推送通知适配器

从非托管 c++ 调用托管 c# 函数