【发布时间】:2019-10-15 07:59:37
【问题描述】:
我正在开发一个跟踪应用程序,我需要防止用户关闭用于确定位置的基本传感器。我无法修改设备 ROM 或拥有 root 访问权限(或者至少最好没有),但我想到使用设备管理 API 通过 Profile Owner 或 Device Owner 模式执行这些功能。我基本上是在寻找一种在 Android 设置中阻止这些功能的方法。
我不确定这是否可行以及如何实现,我没有在 GitHub 中找到实现此功能的应用程序示例。谁能给我一个灯,一些例子或具体的文档?
我尝试遵循这三个文档,但没有成功找到此特定功能的解决方案:
https://source.android.com/devices/tech/admin https://developer.android.com/guide/topics/admin/device-admin https://developers.google.com/android/management/introduction
这是我一直在尝试的摘录:
setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, true);
setUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, active);
setUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH, active);
private void setUserRestriction(String restriction, boolean disallow){
if (disallow) {
mDevicePolicyManager.addUserRestriction(mAdminComponentName, restriction);
} else {
mDevicePolicyManager.clearUserRestriction(mAdminComponentName,
restriction);
}
}
DISALLOW_CONFIG_BLUETOOTH 在 API 级别 18 中添加 public static final String DISALLOW_CONFIG_BLUETOOTH
指定是否不允许用户配置蓝牙。 这并不限制用户打开或关闭蓝牙。默认值为 false。
此限制不会阻止用户使用蓝牙。要完全禁止在设备上使用蓝牙,请使用 DISALLOW_BLUETOOTH。
此限制在受管理的个人资料中无效。
用户限制键。
类型:布尔值
【问题讨论】:
-
你不能阻止他们关闭东西,你唯一能做的就是当你的应用程序加载时告诉用户你需要这些东西(以及为什么)并且在他们这样做之前不要让他们使用应用程序
-
你走错路了(不要强迫用户)。也许你需要改变你的策略。您可以在每种情况下观察 GPS 状态并采取适当的措施...
-
这是一个企业应用程序。因此,公司可能会使用 MDM 来部署应用程序和控制设备。如果是这样,他们可能可以避免禁用某些设置。
-
对于 GPS,您可以尝试以下链接中提到的解决方案 How can I enable or disable the GPS programmatically on Android?
标签: android android-sensors device-admin device-owner android-enterprise