Как запретить пользователям отключать GPS, Wifi и Bluetooth? - PullRequest
5 голосов
/ 29 мая 2019

Я разрабатываю приложение для отслеживания, и мне нужно запретить пользователям отключать основные датчики, используемые для определения местоположения. Я не могу изменить ПЗУ устройств или иметь 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

Указывает, запрещено ли пользователю настраивать Bluetooth. Это не ограничивает пользователя от включения или выключения Bluetooth. Значением по умолчанию является false.

Это ограничение не мешает пользователю использовать Bluetooth. Чтобы полностью запретить использование Bluetooth на устройстве, используйте DISALLOW_BLUETOOTH.

Это ограничение не действует в управляемом профиле.

Ключ для пользовательских ограничений.

Тип: Boolean

Ответы [ 4 ]

5 голосов
/ 29 мая 2019

Вы не можете запретить им отключать GPS, WIFI и Bluetooth. То, что вы можете сделать, это иметь реализацию, как показано ниже, или использовать эту библиотеку.

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

3 голосов
/ 06 июня 2019

Вы не можете, очевидно, по соображениям безопасности.Если вы хотите добиться чего-то подобного, вам, вероятно, потребуется изменить ПЗУ устройства.Вам следует создать BroadcastReceiver и продолжать отслеживать изменения подключения к Интернету и Bluetooth, чем вы можете правильно обработать его, когда пользователь отключает их, приостанавливает работу службы, показывает диалог, завершает работу приложения или делает все, что вам нужно.
Это было бы довольно странноесли приложение может иметь некоторый контроль над пользовательскими настройками, представьте, что если вы устанавливаете приложение, то внезапно вы больше не сможете отключить Wi-Fi, пока не удалите его.Вы не можете сделать это по уважительной причине

1 голос
/ 07 июня 2019

Предотвращение отключения Bluetooth / Wi-Fi также предотвратит использование режима полета, что является проблемой безопасности, ограниченной в ПЗУ и не подлежащей изменению. Как предложено выше, вы можете отслеживать деактивацию Wi-Fi / Bluetooth / GPS и предлагать пользователю предупреждение. Кстати, GPS не зависит от режима полета, так как он является чистым приемником и не осуществляет активных передач. В этом случае GPS будет всегда активен и собирать информацию (если он активен и телефон не находится в режиме энергосбережения, то есть, зависит от местоположения Wi-Fi). Я предлагаю вам проверить, активировал ли пользователь режим полета, чтобы меньше раздражать вашими оповещениями (в тех же ситуациях режим полета обязателен и должен рассматриваться как «законный» в вашем приложении и, возможно, менее критичным, чем добровольное отключение пользователя).

0 голосов
/ 05 июня 2019

Проще говоря, вы не можете, но вы можете слушать, когда Wi-Fi включен / подключен, и вы можете вызвать диалоговое окно с указанием причины.
Таким образом, он дает пользователю более четкое представление о том, что необходимо сделать.

Просто предложение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...