2016-05-11 7 views
2

Ich benutze Netbeans 8.1 und die Gluonhq Jfxplugin 2.2.0.Gluon Charm Down Barcode Scanner - Intent Handler nicht gefunden

Ich versuche, einen Barcode zu lesen, und erstellte ein neues Projekt (die Standard-Hallo-Welt). Ich habe den Button-Handler geändert, um eine Funktion UpdateText() (unten) aufzurufen, die wiederum den Charm Down Scan-Dienst aufruft.

Wenn ich die app ausführen, und klicken Sie auf die Schaltfläche ich folgende Fehlermeldung im Android Geräte-Manager erhalten:

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 } 

Dieser Absturz geschieht auf der scanservice.scan() Linie.

Button-Klick-Handler-Code:

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)); 
    } 

Ich würde schätzen jede Hilfe

Antwort

2

Sie müssen die com.gluonhq.charm.down.android.scan.SCAN Absicht in AndroidManifest.xml Datei definieren. Fügen Sie die folgende Aktivität Definition weiter unten Ihre Haupttätigkeit Definition:

<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> 

Standardmäßig wird die AndroidManifest.xml-Datei für Sie unter der Haube vom Plugin erzeugt. Wenn Sie noch keine benutzerdefinierte AndroidManifest.xml-Datei erstellt haben, können Sie die vom Plugin generierte Datei kopieren. Die Standardversion befindet sich in build/javafxports/tmp/android/AndroidManifest.xml. Kopieren Sie diesen einfach an einen dauerhaften Speicherort, d. H. src/android. Dann aktualisieren Sie Ihre build.gradle das Plugin zu sagen, dass es die benutzerdefinierte AndroidManifest.xml Datei anstelle eines Erzeugung der Standard verwendet werden soll:

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

Update: Sie müssen auch eine zusätzliche Abhängigkeit der ZXing hinzufügen Core-Bibliothek, wie es scheint es nicht automatisch enthalten, wenn sie allein auf den Charme Bibliothek abhängig:

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

Darüber hinaus werden Sie auch die KAMERA-Erlaubnis zu Ihrem Manifest hinzufügen:

<uses-permission android:name="android.permission.CAMERA"/> 
+0

Die 'AndroidManifest.xml' befand sich bereits im Ordner 'src/android'. Nach dem Hinzufügen der Aktivität, wenn ich auf die Schaltfläche klicke, blinkt der ZXing-Bildschirm auf dem Bildschirm, bevor die App abstürzt. Der Fehler ist jetzt: 'java.lang.NoClassDefFoundError: Fehlgeschlagene Auflösung von: Lcom/google/zxing/BarcodeFormat;' –

+0

Hallo, ich habe meine Antwort mit einer Lösung aktualisiert. –

Verwandte Themen