Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблемы с переводом Java кода в Delphi: создание массива пакетов для DataWedge API

Delphi , ОС и Железо , Сканер

При работе с 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-код из примера выше:

// Объявление переменных
var
  activitiesList: TJavaObjectArray<JString>;
  iSetConfig: JIntent;
  bMain: JBundle;
  bApp: JBundle;
  bAppList: TJavaObjectArray<JBundle>;
begin
  // Приложение
  activitiesList := TJavaObjectArray<JString>.Create(1);
  // Функция "j" преобразует строку Delphi в строку Java
  // Например: jStr := TAndroidHelper.StringToJString(dStr)
  // Используется для упрощения кода
  activitiesList.Items[0] := j('*');
  bApp := TJBundle.Create;
  bApp.putString(j('PACKAGE_NAME'), j('my.application.test'));
  bApp.putStringArray(j('ACTIVITY_LIST'), activitiesList);

  bAppList := TJavaObjectArray<JBundle>.create(1);
  bAppList.Items[0] := bApp;
  bMain := TJBundle.Create;
  bMain.putString(j('CONFIG_MODE'), j('UPDATE'));
  bMain.putString(j('PROFILE_NAME'), j('test'));
  bMain.putString(j('RESET_CONFIG'), j('true'));
  bMain.putString(j('PROFILE_ENABLED'), j('true'));
  // Добавление массива пакетов APP_LIST в основной пакет bMain
  bMain.putParcelableArray(j('APP_LIST'), TJavaObjectArray<JParcelable>(bAppList));

  iSetConfig := TJIntent.Create;
  iSetConfig.setAction(j('com.symbol.datawedge.api.ACTION'));
  iSetConfig.putExtra(j('com.symbol.datawedge.api.SET_CONFIG'), bMain);
  TAndroidHelper.Context.sendBroadcast(iSetConfig);
end;

При запуске этого кода все параметры, кроме списка приложений (bAppList), применяются корректно. Причина этого заключается в том, что на устройстве уже exists profile с тем же приложением, и DataWedge не позволяет ассоциировать одно и то же приложение с несколькими профилями.

Чтобы решить эту проблему, достаточно удалить существующий профиль, использующий то же приложение, и код будет работать корректно.

Создано по материалам из источника по ссылке.

Перевод Java-кода для создания массива пакетов в Delphi, чтобы использовать его в проекте с API приложения DataWedge для Android.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сканер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:55:15/0.0032148361206055/0