2016-10-30 5 views
1

Я пытаюсь настроить удаленную конфигурацию для своего приложения с помощью MobileIron EMM. Я сделал все, как описано в руководстве для разработчиков: 1. Я установил вверх манифест:RestrictionManager getRestrictions() всегда пуст

... 
     <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)? Пробовал несколько устройств. Что мне не хватает? Пожалуйста помоги. Моя цель - дистанционно настроить приложение для ключевого слова.

ответ

0

У меня была та же проблема. Мы протестировали приложение Xamarin csharp, использовали общедоступное тестовое приложение Google Test Test, доступное через Play Store. У него есть кнопка «Load manifest limits», которая должна иметь возможность загружать установленные ограничения приложения (в любом случае это не так). Он работал только, если:

  1. Я НЕ отлажен приложение (там значение, применяемое с DPC всегда не определенно/пустым), а начался в устройстве непосредственно и
  2. добавить/установить ключ/значение пар вручную в приложении Test DPC.

Тогда я получил мои логические значения переключился внутри DPC ... (убедитесь, что вы нажали кнопку «Сохранить» в «Управление приложениями» экран)

2

Если вы не получаете каких-либо ограничений на всех, то это, вероятно, потому что ваше приложение не входит в управляемый профиль. Ограничения приложений работают только в двух сценариях ... ваше устройство было подготовлено с помощью консоли EMM (может быть выполнено только после сброса настроек), или на вашем устройстве имеется профиль Android for Work, который управляется вашей консолью EMM. Вам фактически не нужно объявлять каждое ограничение в манифесте, которое позволяет EMM предоставлять эту информацию в своей консоли.

Самый простой способ протестировать ограничения на приложение на незащищенном устройстве - загрузить приложение Test DPC из магазина воспроизведения Google. Настройка будет зашифровать ваше устройство и установить рабочий профиль, который вы можете использовать для тестирования. Вы можете использовать приложение DPC, чтобы имитировать применение ограничений приложения, чтение ограничений от манифеста и ряд других вещей, которые EMM делают. Вы можете установить приложение в рабочий профиль с помощью adb или следовать руководству разработчика, чтобы сообщить Android Studio, как запустить приложение в вашем рабочем профиле.

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

0

Эти две должности должны помочь post1 и post2.

Фред помог мне понять из этих постов, но резюмировать:

Если элемент не был явно установлен управляемый поставщиком конфигураций, то этот пункт не будет в Bundle. Пустой, но «не нулевой» пакет просто означает, что поставщик управляемых конфигураций ничего не установил.Значение defaultValue в файле XML с управляемыми конфигурациями здесь не используется. И приложение не активно управляется.

Чтобы получить значение по умолчанию, запросите значение элемента конфигурации, используя этот RestrictionsManager.getManifestRestrictions(). Он возвращает список всех объектов RestrictionEntry, поскольку они заданы в файле XML с управляемой конфигурацией. Это означает, что значение элемента является значением по умолчанию, как определено в файле XML.