При работе с API приложения DataWedge для Android может возникнуть необходимость перевести Java-код на Delphi, чтобы использовать его в своем проекте. Одной из таких проблем является создание массива пакетов (bundles) для ассоциации профиля DataWedge с определенными приложениями и активностями.
В документации API DataWedge приведен пример Java-кода, создающего список приложений и активностей, ассоциированных с профилем:
// Создание пакетов APP_LIST (приложения и/или активности, ассоциированные с профилем)
Bundle bundleApp1 = new Bundle();
bundleApp1.putString("PACKAGE_NAME","com.symbol.emdk.simulscansample1");
bundleApp1.putStringArray("ACTIVITY_LIST", new String[]{
"com.symbol.emdk.simulscansample1.DeviceControl",
"com.symbol.emdk.simulscansample1.MainActivity",
"com.symbol.emdk.simulscansample1.ResultsActivity.*",
"com.symbol.emdk.simulscansample1.ResultsActivity2",
"com.symbol.emdk.simulscansample1.SettingsFragment1"});
Bundle bundleApp2 = new Bundle();
bundleApp2.putString("PACKAGE_NAME","com.example.intents.datawedgeintent");
bundleApp2.putStringArray("ACTIVITY_LIST", new String[]{
"com.example.intents.datawedgeintent.DeviceControl",
"com.example.intents.datawedgeintent.MainActivity",
"com.example.intents.datawedgeintent.ResultsActivity",
"com.example.intents.datawedgeintent.SettingsFragment1"});
// Добавление следующих пакетов APP_LIST в основной пакет
bMain.putParcelableArray("APP_LIST", new Bundle[]{
bundleApp1
,bundleApp2
});
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);
this.sendBroadcast(i);
При переводе этого кода на Delphi может возникнуть проблема с созданием массива пакетов APP_LIST и его добавлением в основной пакет bMain. В Java для этого используется putParcelableArray, который принимает массив пакетов. В Delphi также можно использовать putParcelableArray, но для этого необходимо явно привести тип переменной.
Ниже приведен пример кода на Delphi, переводящего Java-код из примера выше:
При запуске этого кода все параметры, кроме списка приложений (bAppList), применяются корректно. Причина этого заключается в том, что на устройстве уже exists profile с тем же приложением, и DataWedge не позволяет ассоциировать одно и то же приложение с несколькими профилями.
Чтобы решить эту проблему, достаточно удалить существующий профиль, использующий то же приложение, и код будет работать корректно.
Перевод Java-кода для создания массива пакетов в Delphi, чтобы использовать его в проекте с API приложения DataWedge для Android.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.