Сканер штрих-кода Gluon Charm Down - не найден обработчик намерений

Я использую Netbeans 8.1 и gluonhq jfxplugin 2.2.0.

Я пытаюсь прочитать штрих-код, и создал новый проект (стандартный привет мир). Я изменил обработчик кнопки для вызова функции UpdateText() (ниже), которая, в свою очередь, вызывает службу сканирования Charm Down.

Когда я запускаю приложение и нажимаю на кнопку, я получаю следующую ошибку в Android Device Manager:

E/AndroidRuntime(3583): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.gluonhq.charm.down.android.scan.SCAN cat=[android.intent.category.DEFAULT] flg=0x4080000 }

Этот сбой происходит в строке scanservice.scan().

Код обработчика нажатия кнопки:

    protected void UpdateText(Label label) {
        ScanService scanService = PlatformFactory.getPlatform().getScanService();
        StringProperty scannedString = scanService.scan();
        scannedString.addListener((obs, ov, nv) -> System.out.println("Scanned String = " + nv));
    }

Я был бы очень признателен за любую помощь

1 ответ

Решение

Вы должны определить com.gluonhq.charm.down.android.scan.SCAN намерение в вашем файле AndroidManifest.xml. Добавьте следующее определение вида деятельности под своим основным определением вида деятельности:

<activity android:name="com.gluonhq.charm.down.android.scan.zxing.CaptureActivity"
        android:screenOrientation="sensorLandscape"
        android:clearTaskOnLaunch="true"
        android:stateNotNeeded="true"
        android:windowSoftInputMode="stateAlwaysHidden">
    <intent-filter>
        <action android:name="com.gluonhq.charm.down.android.scan.SCAN"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

По умолчанию плагин создает для вас файл AndroidManifest.xml. Если вы еще не настроили пользовательский файл AndroidManifest.xml, вы можете скопировать тот, который генерирует плагин. Версия по умолчанию находится в build/javafxports/tmp/android/AndroidManifest.xml, Просто скопируйте его в постоянное место, т.е. src/android, Затем обновите свой build.gradle, чтобы сообщить плагину, что он должен использовать пользовательский файл AndroidManifest.xml вместо создания файла по умолчанию:

jfxmobile {
    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
}

обновление: вам также нужно добавить дополнительную зависимость в базовую библиотеку zxing, так как кажется, что она не включается автоматически, в зависимости от одной только библиотеки charm:

dependencies {
    androidRuntime 'com.google.zxing:core:3.2.1'
}

Кроме того, вам необходимо добавить разрешение CAMERA в свой манифест:

<uses-permission android:name="android.permission.CAMERA"/>
Другие вопросы по тегам