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

时间:2019-05-29 16:38:05

标签: android android-sensors device-admin device-owner android-enterprise

我正在开发跟踪应用程序,并且需要防止用户关闭用于确定位置的基本传感器。我无法修改设备ROM或具有root访问权限(或者至少希望没有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。

     

此限制对托管配置文件无效。

     

用户限制键。

     

类型:布尔值

4 个答案:

答案 0 :(得分:3)

您显然不能出于安全考虑而这样做。如果要实现类似的功能,则可能需要修改设备的ROM。您应该创建一个BroadcastReceiver并跟踪Internet和Bluetooth连接的更改,然后在用户断开它们的连接以暂停服务,显示对话框,完成应用程序或您需要执行的操作时正确处理它。
如果一个应用程序可以控制用户设置,这真是很奇怪,想象一下如果您安装了一个应用程序,那么突然之间,您将无法再禁用wi-fi,直到您将其取消安装为止。您有充分理由不能这样做

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您不能阻止他们关闭GPS,WIFI和蓝牙。您可以做的是实现以下或使用此库。

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

答案 3 :(得分:0)

简而言之,您不能,但是可以在启用/连接wifi时收听,并且可以提示说明原因的对话框。
这样,它使用户可以更简洁地掌握需要执行的操作。

  

只是一个建议