Ошибка при использовании расширений Zebra MX AppManager - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь использовать диспетчер приложений расширений Zebra Mx на Xamarin с пакетом EMDK. Мое устройство - Zebra TC51 с Android 7.1

Когда я вызываю функцию:

string[] modifyData = new string[2];
modifyData[0] = ProfileManager.CreateNameValuePair("AppMgrInstall", "Action", "Install");
modifyData[1] = ProfileManager.CreateNameValuePair("AppMgrInstall", "APK", "/storage/emulated/0/Android/data/mypackage/files/apks/install.apk");
EMDKResults results = arg.ProcessProfileAsync("AppMgrProfile", ProfileManager.PROFILE_FLAG.Set, modifyData);

Результат:

Обработка профиль запущен, результат будет возвращен через зарегистрированный обратный вызов приемника данных

, но приемник данных никогда не вызывается.

Если я использую синхронный метод ProcessProfile(), приложение получает на линии застрял на неопределенное время.

Когда я смотрю в logcat, что происходит на устройстве, у меня появляется эта ошибка:

AppList_AllowedSubmitXml ОШИБКА: невозможно загрузить данные c file

Что может быть причиной ошибки?

Как найти дополнительную информацию, связанную с этой ошибкой?

Я искал AppList_AllowedSubmit Xml в Google поисковая система, но она вернула 0 результатов.

РЕДАКТИРОВАТЬ: Вот мой EMDKConfig. xml

<?xml version="1.0" encoding="UTF-8"?><!--This is an auto generated document. Changes to this document may cause incorrect behavior.-->
<wap-provisioningdoc>
    <characteristic type="ProfileInfo">
        <parm name="created_wizard_version" value="7.3.2"/>
    </characteristic>
    <characteristic type="Profile">
        <parm name="ProfileName" value="AppMgrProfile"/>
        <parm name="ModifiedDate" value="2020-01-09 09:19:51"/>
        <parm name="TargetSystemVersion" value="8.0"/>
        <characteristic type="AppMgr" version="8.0">
            <parm name="emdk_name" value="AppMgrInstall"/>
            <parm name="Action" value="Install"/>
            <parm name="APK" value="/storage/emulated/0/Android/data/mypackage/files/apks/install.apk"/>
        </characteristic>
    </characteristic>
</wap-provisioningdoc>

1 Ответ

1 голос
/ 10 января 2020

Вы не можете использовать API ProcessProfile таким образом, ваш проект должен иметь соответствующий файл EMDKConfig. xml, а метод modifyData () можно использовать только для изменения содержимого этого файла перед отправкой, если это необходимо.

Возможно, проще всего скопировать образец WiFi из https://github.com/Zebra/samples-emdkforxamarin-4_0/tree/samples-emdkforxamarin-5_0/ProfileWifiSample1. Этот пример может включать / отключать WiFi среди других задач, и вы можете изменить проект XML в соответствии с вашими потребностями, используя расширение EMDK для Xamarin Visual Studio (https://marketplace.visualstudio.com/items?itemName=EmdkForXamarin.EMDKforXamarin-19166). Расширение VS предоставляет вам визуальный редактор, я бы не советовал пытаться изменить XML напрямую.

Я заметил, что WiFiSample всегда изменяет код XML перед обработкой, но это не требуется - Пример приложения, которое не изменяет xml перед отправкой: https://github.com/darryncampbell/DevTalk-Securing-Your-Zebra-Device/blob/master/SecurityManagers/SecurityManagers/MainActivity.cs#L293

Обновление (см. комментарии): следующий код установит указанный apk:

string[] modifyData = new string[1];
modifyData[0] = "<? xml version =\"1.0\" encoding=\"utf-8\"?>";
modifyData[0] +=  "<characteristic type = \"Profile\" >";  
modifyData[0] +=   "<parm name = \"ProfileName\" value = \"AppMgrProfile\" />";
modifyData[0] +=   "<parm name = \"ModifiedDate\" value = \"2020-01-10 13:14:07\" />";
modifyData[0] +=   "<parm name = \"TargetSystemVersion\" value = \"7.0\" />";
modifyData[0] +=   "<characteristic type = \"AppMgr\" version = \"7.0\" >";
modifyData[0] +=     "<parm name = \"emdk_name\" value = \"AppMgr\" />";
modifyData[0] +=     "<parm name = \"Action\" value = \"Install\" />";
modifyData[0] +=     "<parm name = \"APK\" value = \"/storage/emulated/0/install.apk\" />";
modifyData[0] +=   "</characteristic>";
modifyData[0] += "</characteristic>";
EMDKResults results = arg.ProcessProfileAsync("AppMgrProfile", ProfileManager.PROFILE_FLAG.Set, modifyData);
...