2016-12-22 29 views
1

GPS据API documentation设备所有者的应用程序可以修改一些“安全设置”,特地LOCATION_MODE通过以下调用:启用设备所有者应用

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

通过配置文件或设备所有者调用,以更新Settings.Secure设置 [...]

的装置拥有者可以附加地更新以下设置: LOCATION_MODE

根据我的理解,LOCATION_MODE的值是一个int(resp。 0禁用位置,1仅用于GPS,2用于省电模式,3用于高精度)。

我的问题是String value参数的类型。 LOCATION_MODE需要一个int,但API需要一个String。

我错过了什么吗?

+2

LOCATION_MODE documentation => ... 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时,你可以阅读:

请注意,内部设置值始终存储为字符串[...]

相关问题