Как запретить пользователям отключать GPS, Wifi и Bluetooth?
Я разрабатываю приложение для отслеживания, и мне нужно запретить пользователям отключать основные датчики, используемые для определения местоположения. Я не могу изменить ПЗУ устройств или иметь 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 public static final String DISALLOW_CONFIG_BLUETOOTH
Указывает, запрещено ли пользователю настраивать Bluetooth. Это не ограничивает пользователя от включения или выключения Bluetooth. Значение по умолчанию неверно.
Это ограничение не мешает пользователю использовать Bluetooth. Чтобы полностью запретить использование Bluetooth на устройстве, используйте DISALLOW_BLUETOOTH.
Это ограничение не влияет на управляемый профиль.
Ключ для пользовательских ограничений.
Тип: логическое значение
1 ответ
Вы не можете предотвратить их отключение GPS, WIFI и Bluetooth. То, что вы можете сделать, это иметь реализацию, как показано ниже, или использовать эту библиотеку.
Вы не можете, очевидно, по соображениям безопасности. Если вы хотите добиться чего-то подобного, вам, вероятно, потребуется изменить ПЗУ устройства. Вам следует создать BroadcastReceiver и следить за изменениями подключения к Интернету и Bluetooth, чем вы можете правильно обработать его, когда пользователь отключает их, приостанавливает работу службы, показывает диалоговое окно, завершает работу приложения или все, что вам нужно сделать.
Было бы довольно странно, если бы приложение могло иметь некоторый контроль над пользовательскими настройками, представьте, что если вы устанавливаете приложение, то внезапно вы больше не сможете отключить Wi-Fi, пока не удалите его. Вы не можете сделать это по уважительной причине
Предотвращение отключения Bluetooth / Wi-Fi также предотвратит использование режима полета, что является проблемой безопасности, ограниченной в ПЗУ и не подлежащей изменению. Как предложено выше, вы можете отслеживать деактивацию Wi-Fi / Bluetooth / GPS и предлагать пользователю предупреждение. Кстати, GPS не зависит от режима полета, так как он является чистым приемником и не осуществляет активных передач. В этом случае GPS будет всегда активен и собирать информацию (если он активен и телефон не находится в режиме энергосбережения, то есть, зависит от местоположения Wi-Fi). Я предлагаю вам проверить, активировал ли пользователь режим полета, чтобы быть менее раздражающим при использовании ваших предупреждений (воздушный режим является обязательным в тех же ситуациях и должен рассматриваться как "законный" в вашем приложении и, возможно, менее критичным, чем добровольное отключение пользователя).
Проще говоря, вы не можете, но вы можете слушать, когда Wi-Fi включен / подключен, и вы можете предложить диалоговое окно с указанием причины.
Таким образом, он дает пользователю более четкое представление о том, что необходимо сделать.
Просто предложение