2016-12-22 15 views
1

По словам API documentation владельца устройства приложения может изменить несколько «безопасные параметры» и специально LOCATION_MODE со следующим вызовом:Включение GPS в виде владелец устройства приложения

devicePolicyManager.setSecureSetting (ComponentName admin, 
      String setting, 
      String value) 

Called профильными или устройством владельцами, чтобы обновить настройки Settings.Secure [...]

владелец устройства может дополнительно обновить следующие настройки: LOCATION_MODE

По моему пониманию, значение LOCATION_MODE является int (соотв. 0 для отключенного местоположения, 1 только для GPS, 2 для режима экономии заряда аккумулятора и 3 для высокой точности).

Моя проблема - это тип параметра String value. LOCATION_MODE требует int, но для API требуется строка.

Я что-то пропустил?

+2

Документация LOCATION_MODE => ... bla ... bla ... * putInt (ContentResolver, String, int) * click ... * Функция удобства для обновления одного значения настроек в виде целого * ... * Обратите внимание, что значения внутренней настройки всегда сохраняются как строки * ... * эта функция ** преобразует *** ... *** в строку *** – Selvin

ответ

1

Решение просто использовать представление строки для значения int.

Например, чтобы включить "только GPS" режим определения местоположения:

DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); 
if (dpm.isDeviceOwnerApp(context.getPackageName())) { 
    ComponentName componentName = new ComponentName(context, MyDeviceAdmin.class); 
    dpm.setSecureSetting(componentName, Settings.Secure.LOCATION_MODE, String.valueOf(Settings.Secure.LOCATION_MODE_SENSORS_ONLY)); 
} 

[Благодаря @Selvin комментарий]

Это имеет смысл, потому что при рытье в Javadoc для LOCATION_MODE, вы можете читать:

Обратите внимание, что значения внутренней настройки всегда сохраняются как строки [...]