托管配置:定义字符串数组
Managed Configurations: defining an array of strings
根据restriction entry types,定义一个对象列表我们应该使用bundle_array
类型,例子如下:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android" >
<restriction
android:key="vpn_configuration_list"
android:restrictionType="bundle_array">
<restriction
android:key="vpn_configuration"
android:restrictionType="bundle">
<restriction
android:key="vpn_server"
android:restrictionType="string"/>
<restriction
android:key="vpn_username"
android:restrictionType="string"/>
<restriction
android:key="vpn_password"
android:restrictionType="string"/>
</restriction>
</restriction>
</restrictions>
在类似于 List<VpnConfiguration>
的代码中,VpnConfiguration
将是一个包含三个字段 vpn_server
、vpn_username
和 [=17= 的 pojo ].
到目前为止一切顺利,现在假设需要一个更简单的数据结构,例如 String[]
。
根据 Test DPC 这应该是可能的,因为有一个选项可以插入一个字符串数组:
一旦您 select 它,系统就会提示您输入值列表。但是,文档没有 string_array
类型,它只有 bundle_array
.
使用 bundle_array
你可以定义一个 List<String>
而不是 String[]
,但那太过分了:
<restriction
android:key="mylist"
android:restrictionType="bundle_array">
<restriction
android:key="item"
android:restrictionType="bundle">
<restriction
android:key="name"
android:restrictionType="string" />
</restriction>
</restriction>
那么,有没有一种更简单的方法可以定义字符串数组?
好的,看起来可以使用与定义字符串相同的方式来定义字符串数组:
<restriction
android:key="my_array"
android:restrictionType="string"
android:title="My Array">
然后在接收部分你必须确保你读取的数据是一个字符串数组:
String[] array = restrictions.getStringArray("my_array");
缺点是在后端(EMM 管理)没有线索表明上述限制应被视为字符串数组而不是字符串。
我通过测试发现了这个,仍然不确定这是否是正确的方法...
仅针对 multi-select
限制类型返回 String[]
值类型,为此 EMM returns 从您在 [=12= 中定义的条目中选择的一组条目].
如果您想让企业管理员输入自由格式字符串列表,那么您确实应该定义一个包含 string
限制的 bundle_array
。
编辑: 请注意,bundle_array
仅在 Android 6.0+ 上可用,并且没有传递自由格式列表的标准方法Android 5.0/5.1 上的字符串。您可以想象在 string
中传递 JSON,但您需要就此 JSON 的格式与 EMM 达成一致,因此它不会自动适用于所有 EMM。
根据restriction entry types,定义一个对象列表我们应该使用bundle_array
类型,例子如下:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android" >
<restriction
android:key="vpn_configuration_list"
android:restrictionType="bundle_array">
<restriction
android:key="vpn_configuration"
android:restrictionType="bundle">
<restriction
android:key="vpn_server"
android:restrictionType="string"/>
<restriction
android:key="vpn_username"
android:restrictionType="string"/>
<restriction
android:key="vpn_password"
android:restrictionType="string"/>
</restriction>
</restriction>
</restrictions>
在类似于 List<VpnConfiguration>
的代码中,VpnConfiguration
将是一个包含三个字段 vpn_server
、vpn_username
和 [=17= 的 pojo ].
到目前为止一切顺利,现在假设需要一个更简单的数据结构,例如 String[]
。
根据 Test DPC 这应该是可能的,因为有一个选项可以插入一个字符串数组:
一旦您 select 它,系统就会提示您输入值列表。但是,文档没有 string_array
类型,它只有 bundle_array
.
使用 bundle_array
你可以定义一个 List<String>
而不是 String[]
,但那太过分了:
<restriction
android:key="mylist"
android:restrictionType="bundle_array">
<restriction
android:key="item"
android:restrictionType="bundle">
<restriction
android:key="name"
android:restrictionType="string" />
</restriction>
</restriction>
那么,有没有一种更简单的方法可以定义字符串数组?
好的,看起来可以使用与定义字符串相同的方式来定义字符串数组:
<restriction
android:key="my_array"
android:restrictionType="string"
android:title="My Array">
然后在接收部分你必须确保你读取的数据是一个字符串数组:
String[] array = restrictions.getStringArray("my_array");
缺点是在后端(EMM 管理)没有线索表明上述限制应被视为字符串数组而不是字符串。
我通过测试发现了这个,仍然不确定这是否是正确的方法...
仅针对 multi-select
限制类型返回 String[]
值类型,为此 EMM returns 从您在 [=12= 中定义的条目中选择的一组条目].
如果您想让企业管理员输入自由格式字符串列表,那么您确实应该定义一个包含 string
限制的 bundle_array
。
编辑: 请注意,bundle_array
仅在 Android 6.0+ 上可用,并且没有传递自由格式列表的标准方法Android 5.0/5.1 上的字符串。您可以想象在 string
中传递 JSON,但您需要就此 JSON 的格式与 EMM 达成一致,因此它不会自动适用于所有 EMM。