我正在尝试使用MobileIron EMM为我的应用程序设置远程配置。我已经按照开发人员指南中的说明完成了所有工作:
1.我设置了 list :

...
        <meta-data
            android:name="android.content.APP_RESTRICTIONS"
            android:resource="@xml/app_restrictions"/>
    </application>

2.我已经描述了限制:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
    <restriction
        android:title="@string/some_title"
        android:key="SOME_KEY"
        android:restrictionType="string"
        android:defaultValue="123"/>
</restrictions>

3.我正在尝试接收以下内容:
RestrictionsManager manager = (RestrictionsManager) context.getSystemService(Context.RESTRICTIONS_SERVICE);
        Bundle b = manager.getApplicationRestrictions();
        if(b!=null){
            if(b.containsKey("SOME_KEY")) {
                return b.getString("SOME_KEY");
            }else{
                System.out.println("bundle is not null");
                for (String s: b.keySet()){
                    System.out.println("key in b is : " + s);
                }
                System.out.println(b.isEmpty() + " bundle is empty");
            }
        }else{
            System.out.println("Bundle is null");
        }
        return "";
    }

我总是得到输出:
bundle is not null
true bundle is empty

尽管我已为限制设置了默认值。为什么我至少没有获得限制的默认值?为什么我从未获得实际值(在服务器端,我已经使用MobileIron Cloud及其AppConnect配置设置了值)?尝试了几种设备。我想念什么?请帮忙。我的目标是远程设置应用程序的某些键值。

最佳答案

如果您根本没有受到任何限制,那可能是因为您的应用程序不是托管配置文件的一部分。应用限制仅在以下两种情况下起作用:使用EMM控制台配置了设备(只能在恢复出厂设置后进行设置),或者设备具有由EMM控制台管理的Android for Work配置文件。您实际上不需要在 list 中声明每个限制,而仅允许EMM在其控制台中提供该信息。

在未配置的设备上测试您的应用程序限制的最简单方法是从Google Play商店下载Test DPC应用程序。对其进行设置将对您的设备进行加密,并安装可用于测试的工作资料。您可以使用DPC应用程序来模拟应用程序应用限制,从 list 中读取限制以及EMM执行的许多其他操作。您可以使用adb或通过遵循开发者指南来告诉Android Studio如何在工作资料中运行该应用,将其安装在工作资料上。

https://developer.android.com/work/guide.html#testing

10-08 18:20