如何防止用户关闭GPS,Wifi和蓝牙?



我正在开发一个跟踪应用程序,我需要防止用户关闭用于确定位置的基本传感器。我无法修改设备 ROM 或具有 root 访问权限(或者至少没有非常可取),但我想使用设备管理 API 通过配置文件所有者或设备所有者模式执行这些功能。我基本上正在寻找一种在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 中添加 公共静态最终字符串DISALLOW_CONFIG_BLUETOOTH

指定是否禁止用户配置蓝牙。这不会限制用户打开或关闭蓝牙。默认值为 false。

此限制不会阻止用户使用蓝牙。要完全禁止在设备上使用蓝牙,请使用DISALLOW_BLUETOOTH。

此限制在托管配置文件中不起作用。

用户限制的键。

类型:布尔值

您无法阻止他们关闭GPS,WIFI和蓝牙。您可以做的是拥有如下所示的实现或使用此库。

https://github.com/KI-labs/gps-permission-checks-livedata

显然出于安全原因,您不能这样做。如果你想实现这样的东西,你可能需要修改设备ROM。您应该创建一个 BroadcastReceiver 并继续跟踪 Internet 和蓝牙连接更改,而不是当用户断开它们以暂停服务、显示对话框、完成应用程序或您需要执行的任何操作时,您可以正确处理它。
如果一个应用程序可以对用户设置进行一些控制,那将是很奇怪的,想象一下,如果您安装一个应用程序, 然后突然间,您无法再禁用Wi-Fi,直到您取消它。你不能这样做是有充分理由的

防止蓝牙/wifi断开连接也会阻止使用飞行器模式,这是一个受ROM限制且不可覆盖的安全问题。 如上所述,您的选择是监控 wifi/蓝牙/GPS 停用并提示用户发出警报。 顺便说一下,GPS不受飞机模式的影响,因为它是一个纯粹的接收器,不会进行主动传输。在这种情况下,GPS将始终处于活动状态并收集信息(如果处于活动状态并且手机未处于省电模式,即依赖wifi位置)。我建议您检查用户是否激活了飞机模式,以减少警报的烦恼(空中模式在相同情况下是强制性的,并且应该被您的应用程序视为"合法",并且可能不如用户自愿断开连接那么重要

简单来说,你不能,但你可以在启用/连接wifi时收听,你可以提示一个对话框说明原因。
通过这种方式,它使用户能够更简洁地掌握需要完成的工作。

只是一个建议

相关内容

  • 没有找到相关文章

最新更新