Возможности библиотеки
- Определение, запущено ли Android-приложение на устройстве под управлением Headwind MDM
- Получение настроек приложения с сервера по ID устройства
- Отправка журналов на сервер (правила отправки журналов настраиваются на сервере по ID устройства)
- Получение Push-уведомлений, отправляемых серверными плагинами
Список классов
- HeadwindMDM
- HeadwindMDM.EventHandler
- MDMError
- MDMException
- MDMPushHandler
- MDMPushMessage
- MDMService
- MDMService.ResultHandler
- MDMService.Log
- MDMService.Preferences
Интеграция
Для подключения библиотеки в ваше приложение, вам нужно:
- Загрузить последнюю версию библиотеки Headwind MDM hmdm-X.X.X.aar и скопировать ее в ваш проект в поддиректорию libs
- Добавить строку в build.gradle (уровень модуля):
implementation files('libs/hmdm-1.1.5.aar')
(при необходимости замените номер версии на последнюю версию библиотеки). - Добавить возможность взаимодействия с приложением Headwind MDM package в AndroidManifest.xml внутри тега <manifest>:
<queries> <package android:name="com.hmdm.launcher" /> </queries>
HeadwindMDM
class com.hmdm.HeadwindMDM
Добавлен в 1.1.0
Класс, упрощающий интеграцию с сервисом Headwind MDM. Этот класс инкапсулирует автоматическое соединение с сервисом при его потере, а также уведомляет ваше приложение об изменениях конфигурации
Методы
HeadwindMDM
getInstance()
Получить экземпляр объекта HeadwindMDM
Получить экземпляр объекта HeadwindMDM
int
getVersion()
Получить версию API, поддерживаемую приложением MDM (1.1.3 = 113, или 0 для более ранних версий)
Получить версию API, поддерживаемую приложением MDM (1.1.3 = 113, или 0 для более ранних версий)
void
setApiKey(String apiKey)
Задать ключ API, требуемый для привилегированных операций, таких, как getImei() и getSerial()
Задать ключ API, требуемый для привилегированных операций, таких, как getImei() и getSerial()
void
forceConfigUpdate()
Принудительно обновить конфигурацию и установить обновления приложений, даже если фоновая установка не разрешена политиками конфигурации
Принудительно обновить конфигурацию и установить обновления приложений, даже если фоновая установка не разрешена политиками конфигурации
boolean
connect(Context context, HeadwindMDM.EventHandler handler)
Подключиться к сервису Headwind MDM и указать обработчик событий. Возвращает true при успехе и false при ошибке (обычно, если приложение запущено вне среды Headwind MDM)
Подключиться к сервису Headwind MDM и указать обработчик событий. Возвращает true при успехе и false при ошибке (обычно, если приложение запущено вне среды Headwind MDM)
void
disconnect(Context context)
Отключиться от сервиса Headwind MDM
Отключиться от сервиса Headwind MDM
boolean
isConnected()
Проверяет статус соединения с сервисом. Если true — можно пользоваться функциями библиотеки.
Проверяет статус соединения с сервисом. Если true — можно пользоваться функциями библиотеки.
String
getServerHost()
Получить имя хоста, на котором установлен сервер Headwind MDM
Получить имя хоста, на котором установлен сервер Headwind MDM
String
getSecondaryServerHost()
Получить резервное имя хоста, на котором установлен сервер Headwind MDM
Получить резервное имя хоста, на котором установлен сервер Headwind MDM
String
getServerPath()
Получить путь, по которому доступен Headwind MDM
Получить путь, по которому доступен Headwind MDM
String
getServerUrl()
Получить URL, по которому доступен Headwind MDM
Получить URL, по которому доступен Headwind MDM
String
getSecondaryServerUrl()
Получить резервный URL, по которому доступен Headwind MDM
Получить резервный URL, по которому доступен Headwind MDM
String
getDeviceId()
Получить ID устройства
Получить ID устройства
String
getCustom(int number)
Получить кастомную переменную, определенную на сервере (number — число от 1 до 3)
Получить кастомную переменную, определенную на сервере (number — число от 1 до 3)
boolean
isManaged()
Находится ли устройство в управляемом режиме (назначен Device Owner)
Находится ли устройство в управляемом режиме (назначен Device Owner)
boolean
isKiosk()
Находится ли устройство в режиме киоска
Находится ли устройство в режиме киоска
String
getImei()
Получить IMEI устройства (привилегированная операция, требующая ключа API)
Получить IMEI устройства (привилегированная операция, требующая ключа API)
String
getSerial()
Получить серийный номер устройства (привилегированная операция, требующая ключа API)
Получить серийный номер устройства (привилегированная операция, требующая ключа API)
boolean
setCustom(int number, String value)
Установить значение кастомной переменной для передачи на сервер
Установить значение кастомной переменной для передачи на сервер
HeadwindMDM.EventHandler
interface com.hmdm.HeadwindMDM.EventHandler
Добавлен в 1.1.0
Интерфейс, получающий события из сервиса Headwind MDM
Методы
void
onHeadwindMDMConnected()
Вызывается после успешного установления соединения. В этом методе обычно выполняется код получения настроек приложения с сервера.
Вызывается после успешного установления соединения. В этом методе обычно выполняется код получения настроек приложения с сервера.
void
onHeadwindMDMDisconnected()
Вызывается при разрыве соединения с сервисом. Это информационный метод, не требующий действий. Как правило, после вызова этого метода, через несколько секунд последует вызов onHeadwindMDMConnected().
Вызывается при разрыве соединения с сервисом. Это информационный метод, не требующий действий. Как правило, после вызова этого метода, через несколько секунд последует вызов onHeadwindMDMConnected().
void
onHeadwindMDMConfigChanged()
Вызывается в случае, если сервер изменил настройки. В этом методе следует выполнить код получения настроек приложения с сервера.
Вызывается в случае, если сервер изменил настройки. В этом методе следует выполнить код получения настроек приложения с сервера.
MDMError
class com.hmdm.MDMError
Добавлен в 1.0.1
Класс ошибки Headwind MDM, используемый в качестве описания ошибки в MDMException.
Константы
int
NO_ERROR = 0
int
ERROR_NO_MDM = 1
Приложение запущено вне системы Headwind MDM
Приложение запущено вне системы Headwind MDM
int
ERROR_INTERNAL = 2
Внутренняя ошибка лаунчера
Внутренняя ошибка лаунчера
int
ERROR_GENERAL = 3
Ошибка библиотеки Headwind MDM
Ошибка библиотеки Headwind MDM
int
ERROR_DISCONNECTED = 4
Сервис Headwind MDM отключился
Сервис Headwind MDM отключился
int
ERROR_INVALID_PARAMETER = 5
Метод получил неверный параметр
Метод получил неверный параметр
int
ERROR_VERSION = 6
Лаунчер не поддерживает метод API и требует обновления
Лаунчер не поддерживает метод API и требует обновления
int
ERROR_KEY_NOT_MATCH = 7
Неверный ключ API
Неверный ключ API
Конструкторы
MDMError()
Создает пустой объект (code = 0)
Создает пустой объект (code = 0)
MDMError(int code)
Создает ошибку с заданным кодом
Создает ошибку с заданным кодом
Поля
int
code
Код ошибки
Код ошибки
Методы
static String
getMessage(int code)
Получить текст ошибки по коду
Получить текст ошибки по коду
String
getMessage()
Получить текст ошибки данного экземпляра класса
Получить текст ошибки данного экземпляра класса
MDMException
class com.hmdm.MDMException
Добавлен в 1.0.1
Исключение, возникающее в методах библиотеки
Конструкторы
MDMException(int code)
Исключение с заданным кодом ошибки (без комментария)
Исключение с заданным кодом ошибки (без комментария)
MDMException(int code, String comment)
Исключение с заданным кодом ошибки и комментарием
Исключение с заданным кодом ошибки и комментарием
Поля
MDMError
mdmError
Код ошибки
Код ошибки
String
comment
Дополнительные данные (комментарий)
Дополнительные данные (комментарий)
MDMPushHandler
abstract class com.hmdm.MDMPushHandler
Добавлен в 1.0.3
Вспомогательный класс, позволяющий мобильному приложению получать Push-сообщения, отправляемые плагинами с сервера. Это абстрактный класс, собственную реализацию которого вы должны сделать в вашем приложении.
Методы
abstract void
onMessageReceived(MDMPushMessage message)
Вызывается при получении Push-сообщения
Вызывается при получении Push-сообщения
void
register(String messageType, Context context)
Регистрирует обработчик, ожидающий сообщений заданного типа
Регистрирует обработчик, ожидающий сообщений заданного типа
void
register(String[] messageTypes, Context context)
Регистрирует обработчик, ожидающий сообщений нескольких заданных типов
Регистрирует обработчик, ожидающий сообщений нескольких заданных типов
void
unregister(Context context)
Отменяет регистрацию обработчика
Отменяет регистрацию обработчика
MDMPushMessage
class com.hmdm.MDMPushMessage
Добавлен в 1.0.3
Push-сообщение, отправляемое приложению со стороны серверного плагина
Константы
String
MessageConfigUpdated
Встроенный тип сообщения, отправляемый при обновлении конфигурации Headwind MDM на сервере
Встроенный тип сообщения, отправляемый при обновлении конфигурации Headwind MDM на сервере
Методы
String
getType()
Получить тип сообщения
Получить тип сообщения
void
setType(String type)
Установить тип сообщения
Установить тип сообщения
org.json.JSONObject
getData()
Получить данные сообщения
Получить данные сообщения
void
setData(org.json.JSONObject data)
Установить данные сообщения
Установить данные сообщения
MDMService
class com.hmdm.MDMService
Добавлен в 1.0.1
Основной класс, используемый для соединения мобильного приложения с сервисом Headwind MDM.
Константы
String
KEY_SERVER_HOST
Запросить доменное имя сервера (включая протокол)
Запросить доменное имя сервера (включая протокол)
String
KEY_SECONDARY_SERVER_HOST
Запросить доменное имя резервного сервера (включая протокол)
Запросить доменное имя резервного сервера (включая протокол)
String
KEY_SERVER_PATH
Запросить путь к панели управления (пустое значение, если развернуто в корне)
Запросить путь к панели управления (пустое значение, если развернуто в корне)
String
KEY_DEVICE_ID
Запросить ID устройства
Запросить ID устройства
Методы
MDMService
getInstance()
Получить экземпляр объекта MDMService
Получить экземпляр объекта MDMService
int
getVersion()
Получить версию API, поддерживаемую приложением MDM (1.1.3 = 113, или 0 для более ранних версий)
Получить версию API, поддерживаемую приложением MDM (1.1.3 = 113, или 0 для более ранних версий)
void
forceConfigUpdate()
Принудительно обновить конфигурацию и установить обновления приложений, даже если фоновая установка не разрешена политиками конфигурации
Принудительно обновить конфигурацию и установить обновления приложений, даже если фоновая установка не разрешена политиками конфигурации
boolean
connect(Context context, MDMService.ResultHandler handler)
Соединиться с сервисом Headwind MDM и уведомить обработчик о факте соединения. Возвращает true при успехе и false при ошибке (обычно, если приложение запущено вне среды Headwind MDM)
Соединиться с сервисом Headwind MDM и уведомить обработчик о факте соединения. Возвращает true при успехе и false при ошибке (обычно, если приложение запущено вне среды Headwind MDM)
Bundle
queryConfig() throws MDMException
Получить конфигурацию с сервера (для получения параметров нужно получать из Bundle атрибуты, соответствующие KEY_… константам)
Получить конфигурацию с сервера (для получения параметров нужно получать из Bundle атрибуты, соответствующие KEY_… константам)
Bundle
queryConfig(String apiKey) throws MDMException
Получить конфигурацию с сервера, включая привилегированные параметры (для получения параметров нужно получать из Bundle атрибуты, соответствующие KEY_… константам)
Получить конфигурацию с сервера, включая привилегированные параметры (для получения параметров нужно получать из Bundle атрибуты, соответствующие KEY_… константам)
boolean
setCustom(int number, String value)
Установить значение кастомной переменной для передачи на сервер
Установить значение кастомной переменной для передачи на сервер
MDMService.ResultHandler
interface com.hmdm.MDMService.ResultHandler
Добавлен в 1.0.1
Интерфейс, получающий результат соединения с сервисом Headwind MDM
Методы
void
onMDMConnected()
Вызывается после успешного установления соединения
Вызывается после успешного установления соединения
void
onMDMDisconnected()
Вызывается при разрыве соединения с сервисом (обычно в случае обновления или аварийного завершения лаунчера Headwind MDM). После получения этого сигнала, рекомендуется заново подключиться к сервису после прошествия нескольких секунд.
Вызывается при разрыве соединения с сервисом (обычно в случае обновления или аварийного завершения лаунчера Headwind MDM). После получения этого сигнала, рекомендуется заново подключиться к сервису после прошествия нескольких секунд.
MDMService.Log
static class com.hmdm.MDMService.Log
Добавлен в 1.0.1
Класс, отправляющий журналы приложения на сервер. Этот класс имеет интерфейс, аналогичный android.util.Log, поэтому вы можете легко заменить движок журналов без просмотра и обновления всего кода приложения.
Константы
int
ERROR = 1
int
WARN = 2
int
INFO = 3
int
DEBUG = 4
int
VERBOSE = 5
Методы
void
log(int level, String tag, String message)
Отправка лога заданного уровня на сервер
Отправка лога заданного уровня на сервер
void
v(String tag, String message)
void
d(String tag, String message)
void
i(String tag, String message)
void
w(String tag, String message)
void
e(String tag, String message)
Эти методы аналогичны методам android.util.Log. Они пишут сообщение во внутренний лог Android (logcat) и передают сообщение на сервер.
MDMService.Preferences
static class com.hmdm.MDMService.Preferences
Добавлен в 1.0.4
Этот класс используется для получения настроек приложения с сервера (массовая конфигурация Android-приложений). Функция централизованного хранения настроек приложений на сервере пока не реализована.
Методы
String
get(String attr, String defValue)
Получить атрибут, определенный во вкладке «Настройки приложений» конфигурации.
Получить атрибут, определенный во вкладке «Настройки приложений» конфигурации.
boolean
set(String attr, String value)
Установить атрибут (пока не реализовано)
Установить атрибут (пока не реализовано)
void
apply()
Сохранить конфигурацию на сервере (пока не реализовано)
Сохранить конфигурацию на сервере (пока не реализовано)
Примеры кода
Версия 1.1.0 и выше
Чтобы включить функции Headwind MDM в ваше Android-приложение, используйте в качестве примера следующий код:
public class MainActivity extends AppCompatActivity implements HeadwindMDM.EventHandler { ... private HeadwindMDM headwindMDM; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... headwindMDM = HeadwindMDM.getInstance(); } @Override protected void onResume() { super.onResume(); ... if (!headwindMDM.isConnected()) { if (!headwindMDM.connect(this, this)) { // Ошибка соединения с Headwind MDM, скорее всего приложение запущено вне среды Headwind MDM } } } @Override protected void onDestroy() { headwindMDM.disconnect(this); super.onDestroy(); } @Override public void onHeadwindMDMConnected() { // Подключились к Headwind MDM, теперь можно получить настройки и выполнить другие функции , относящиеся к MDM loadSettings(); } @Override public void onHeadwindMDMDisconnected() { } @Override public void onHeadwindMDMConfigChanged() { // Настройки на сервере изменились, нужно их обновить в приложении loadSettings(); } // Получение настроек приложения с сервера private void loadSettings() { String someSetting = MDMService.Preferences.get("some_setting", getString(R.string.default_setting)); } }
Версии библиотеки до 1.1.0
В этом коде требуется вручную реализовать повторное подключение в случае разрыва соединения с сервисом (например, в случае обновления лаунчера Headwind MDM).
public class MainActivity extends AppCompatActivity implements MDMService.ResultHandler { ... private MDMService mdmService; private boolean mdmConnected = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... mdmService = MDMService.getInstance(); } @Override protected void onResume() { super.onResume(); ... if (mdmConnected) { // Если мы уже соединены с Headwind MDM, загрузим настройки MDM и выполним здесь другие функции, относящиеся к MDM String someSetting = MDMService.Preferences.get("some_setting", getString(R.string.default_setting)); } else { if (!mdmService.connect(this, this)) { // Ошибка соединения с Headwind MDM, скорее всего приложение запущено вне среды Headwind MDM } } } @Override public void onMDMConnected() { mdmConnected = true; // Подключились к Headwind MDM, теперь можно получить настройки и выполнить другие функции , относящиеся к MDM String someSetting = MDMService.Preferences.get("some_setting", getString(R.string.default_setting)); } @Override public void onMDMDisconnected() { mdmConnected = false; // Повтор соединения через 5 секунд (сюда попадаем после обновления или аварийного завершения лаунчера) new Handler().postDelayed(new MDMReconnectRunnable(), 5000); } public class MDMReconnectRunnable implements Runnable { @Override public void run() { if (!mdmService.connect(MainActivity.this, MainActivity.this)) { // Повтор через 1 минуту new Handler().postDelayed(this, 60000); } } } }