English

Ratgeber

Barcode-Scan kommt im Browser des MDE-Geräts nicht an: Ursachen und Lösungen

Kommt der Barcode-Scan im Browser des MDE-Geräts nicht an, liegt es meist am Scanner-Profil der Browser-App: Im Standardbrowser erreicht ein Scan die Web-App nur als Tastatureingabe (Keyboard Wedge) in dem Feld, das den Fokus hat – die Intent-Ausgabe des Scanners kann eine Webseite nicht empfangen. Schalten Sie für den Browser die Tastatur-Ausgabe ein, setzen Sie den Fokus auf das Scan-Feld und hängen Sie bei Bedarf Enter oder Tab an; alternativ nimmt ein Kiosk-Browser mit Scanner-Anbindung den Scan selbst an – per Intent oder über die Scanner-Schnittstelle des Herstellers – und schreibt ihn in das aktive Feld.

Stand: · ICT Baden

Wie der Scan in die Web-App kommt: als Tastatureingabe oder als Intent

Was der eingebaute Scanner eines MDE-Geräts liest, gibt in der Regel ein Scanner-Dienst des Herstellers an die Apps weiter – auf Zebra-Geräten DataWedge. DataWedge arbeitet mit Profilen: Ein Profil ist einer oder mehreren Apps zugeordnet und gilt, sobald eine davon im Vordergrund ist; jede App gehört zu höchstens einem Profil. Für Apps ohne eigenes Profil gilt das Standardprofil Profile0. Im Profil ist auch festgelegt, wie der Scan an die App geht – für den Browser kommt es auf zwei Wege an:

  • Tastatur-Ausgabe (Keystroke Output, „Keyboard Wedge“)

    Der Scanner-Dienst tippt den Code, als würde jemand die Tasten drücken – in das Feld, das gerade den Fokus hat. Der Browser gibt diese Eingabe wie jede andere Tastatureingabe an die Webseite weiter. Auf diesem Weg kommt ein Scan im Standardbrowser an.

  • Intent-Ausgabe

    Der Scan geht als Android-Intent an eine App, die ihn mit eigenem Code entgegennimmt – gedacht für native Apps und für Browser mit eigener Scanner-Anbindung. Eine Webseite im Standardbrowser kann einen Intent nicht empfangen: Der Scanner liest, aber im Formular kommt nichts an.

Geräte anderer Hersteller, etwa von Honeywell, haben eigene Scanner-Dienste mit eigenen Einstellungen; wo sie stehen, zeigt das Handbuch des Geräts. Die Beispiele auf dieser Seite nennen die Einstellungen von DataWedge, wie Zebra sie dokumentiert.

Fehlersuche: Ursachen und Lösungen

Ein schneller Test vorweg: Tippen Sie in einer einfachen Text-App, etwa einer Notiz-App, auf ein Eingabefeld und scannen Sie. Erscheint der Code dort, arbeiten Scanner und Tastatur-Ausgabe – dann liegt es am Profil der Browser-App oder an der Web-App. Erscheint er auch dort nicht, prüfen Sie zuerst den Scanner selbst: ob DataWedge eingeschaltet ist, ob der Barcode-Typ unter den Decodern aktiviert ist und ob eine andere App den Scanner belegt – laut Zebra kann immer nur eine App die Scan-Hardware steuern.

  • Für den Browser gilt kein passendes Profil

    Ist die Browser-App keinem Profil zugeordnet, gilt Profile0. Ist es abgeschaltet, scannt das Gerät im Browser gar nicht; fehlt dort die Tastatur-Ausgabe, liest der Scanner, aber die Daten kommen in der App nicht an – genau dieses Bild beschreibt Zebra. Lösung: in DataWedge ein Profil anlegen und aktivieren („Profile enabled“), unter „Associated apps“ die Browser-App mit allen Aktivitäten (Sternchen) zuordnen und „Barcode Input“ sowie „Keystroke Output“ einschalten – oder Profile0 entsprechend einstellen. Läuft die Web-App in mehreren Browsern, braucht jeder die Zuordnung. Außerdem darf die Browser-App nicht in der Liste der Apps stehen, in denen DataWedge abgeschaltet ist (Disabled App List).

  • Der Scan geht als Intent hinaus

    Ist im Profil des Browsers die Intent-Ausgabe statt der Tastatur-Ausgabe eingeschaltet, schickt DataWedge den Scan als Android-Intent – den nur eine App mit eigenem Code empfangen kann, keine Webseite. Lösung: für den Browser die Tastatur-Ausgabe einschalten. Die Intent-Ausgabe ist der richtige Weg für native Apps und für Browser, die Scans selbst annehmen.

  • Kein Eingabefeld hat den Fokus

    Die Tastatur-Ausgabe schreibt dorthin, wo der Cursor steht. Nach dem Laden einer Seite hat ein Feld nur dann den Fokus, wenn die Web-App ihn setzt oder jemand das Feld antippt; sonst geht der Scan ins Leere. Landet er im falschen Feld, hat ein anderes Feld den Fokus – etwa weil ein angehängtes Tab ihn weitergeschoben hat. Lösung in der Web-App: das Scan-Feld mit dem Attribut autofocus versehen und nach jeder Buchung per focus() wieder darauf setzen.

  • Zeichen fehlen oder kommen durcheinander

    Kommt der Code schneller, als die App ihn annimmt, können Zeichen fehlen. Dafür hat die Tastatur-Ausgabe von DataWedge eine Verzögerung nach jedem Zeichen („Inter-character delay“, ab Werk 0 ms): Zebra empfiehlt, sie bei Fehlern in Schritten von 100 ms zu erhöhen, bis die Fehler verschwinden, höchstens bis 1000 ms – das kann die App verlangsamen. Mit „Multi-byte character delay“ gilt die Verzögerung nur für Mehrbyte-Zeichen – Unicode- und Mehrbyte-Zeichen können laut Zebra beim Senden an den Android-Browser Probleme machen. Kommt Enter vor den letzten Zeichen an, hilft die Verzögerung vor Tastenereignissen („Key event delay“): Text und Tastenereignisse laufen getrennt und können sich überholen.

  • Enter oder Tab fehlt nach dem Scan

    Manche Web-Apps übernehmen den Code erst mit Enter – Enter in einem Textfeld kann ein Formular abschicken – oder erwarten Tab, um ins nächste Feld zu springen. Lösung: im Profil die Basic Data Formatting aktivieren und dort „Send ENTER key“ oder „Send TAB key“ einschalten; DataWedge hängt dann Enter bzw. Tab an den Code an. Soll nach jedem Scan per Enter oder Tab ins nächste Feld einer Webseite gesprungen werden, empfiehlt Zebra ab Android 10 zusätzlich, die eigene Tastatur von DataWedge einzublenden (eine Option der Tastatur-Ausgabe).

  • Die Bildschirmtastatur stört

    Ab Android 10 verschwindet die Standardtastatur während eines Scans kurz und erscheint danach wieder, weil DataWedge die Daten über eine eigene Eingabemethode ausgibt. Damit sie während einer Scan-Serie gar nicht erst erscheint, empfiehlt Zebra ebenfalls die eigene Tastatur von DataWedge. In der Web-App zeigt das Attribut inputmode="none" dem Browser an, dass ein Feld keine Bildschirmtastatur braucht – passend für Felder, die nur gescannt werden; vorher auf dem Gerät testen.

  • Die Web-App wertet einzelne Tastendrücke aus

    Manche Web-Apps setzen den Scan aus einzelnen Tastatur-Ereignissen zusammen – mit keydown oder dem veralteten keypress –, statt den Wert des Feldes zu lesen. Ob jedes Zeichen als Tastendruck ankommt, hängt dann vom Ausgabeweg ab: DataWedge gibt ab Android 10 über eine eigene Eingabemethode aus; ausdrücklich als Tastenereignisse schickt es druckbare Zeichen mit der Option „Send Characters as Events“. Robuster ist es, den Wert des Feldes beim input-Ereignis oder bei Enter zu lesen. Lässt sich die Web-App nicht ändern, ist „Send Characters as Events“ einen Versuch wert.

Die Lösungswege: vom Standardbrowser bis zum Kiosk-Browser

  • Standardbrowser mit Tastatur-Ausgabe

    Der naheliegende Weg ohne zusätzliche Software: ein Scanner-Profil für die Browser-App mit Tastatur-Ausgabe, Enter oder Tab nach Bedarf und, falls nötig, einer Verzögerung nach jedem Zeichen. Die Einstellungen von DataWedge lassen sich exportieren und per MDM auf weitere Geräte verteilen. Grenzen: Die Web-App hängt von Fokus und Tastatureingaben ab und kann den Scanner nicht steuern. Auf eine App sperren lässt sich das Gerät über ein MDM im Lock-Task-Modus (ab Android 9 mit jeder App); ob sich der Browser auf bestimmte Seiten beschränken lässt, hängt vom Browser ab.

  • Web-App an den Scanner anpassen

    Wer die Web-App selbst entwickelt, macht sie robust gegenüber der Scanner-Einstellung: Scan-Feld mit autofocus, Fokus nach jeder Buchung zurücksetzen, den Wert beim input-Ereignis oder bei Enter lesen statt einzelner Tastendrücke, inputmode="none" für reine Scan-Felder. Das funktioniert unabhängig vom Gerätehersteller, solange der Scanner als Tastatur ausgibt. Voraussetzung ist Zugriff auf den Code der Web-App – bei zugekaufter Software oft nicht gegeben.

  • Native App oder eigene App mit WebView

    Eine Android-App nimmt den Scan per Intent mit eigenem Code an und kann den Scanner auch steuern, etwa per Soft-Trigger. Eine vorhandene Web-App lässt sich in eine eigene App mit Android WebView einbetten, die Scans per Skript an die Seite gibt. Für Aufrufe aus der Seite in die App empfiehlt Android addWebMessageListener mit erlaubten Herkünften; das ältere addJavascriptInterface() nur, wenn alle Inhalte der WebView aus eigener Hand stammen. Der Preis: Android-Entwicklung, Pflege, Signierung und Verteilung der App.

  • Kiosk-Browser mit Scanner-Anbindung

    Ein Browser für MDE-Geräte, der den Scan selbst annimmt – per Intent oder über die Scanner-Schnittstelle des Herstellers – und in das aktive Feld schreibt; Web-Apps, die den Wert des Feldes lesen, brauchen dann in der Regel keine Änderung. Dazu kommen je nach Produkt Kioskmodus, eine Liste erlaubter Seiten und Konfiguration per MDM. Solche Browser gibt es von mehreren Anbietern; einen sachlichen Vergleich mit bekannten Produkten finden Sie auf der Produktseite von Industrial Kiosk Browser.

Zur Abgrenzung: Terminal-Emulation ist für textbasierte Host-Anwendungen über Telnet, 5250, 3270 oder VT gedacht, nicht für Web-Apps. Wer solche Anwendungen noch betreibt, braucht dafür eine Terminal-Emulation; ein Webbrowser allein – auch Industrial Kiosk Browser – ersetzt sie nicht.

Industrial Kiosk Browser: Kiosk-Browser mit Scanner-Anbindung von ICT Baden

Industrial Kiosk Browser ist unser Kiosk-Browser für Android-MDE-Geräte ab Android 8.0, auf Basis von Android WebView. Er nimmt den Scan selbst an, statt auf die Tastatur-Ausgabe zu setzen: Auf Zebra-Geräten legt er beim Start ein eigenes DataWedge-Profil „Industrial Kiosk Browser“ an – mit Intent-Ausgabe, ohne Tastatur-Ausgabe – und lässt die Decoder-Einstellungen unverändert. Auf Honeywell-Geräten nutzt er die Intent-API des Data Collection Service, auf anderen Geräten jede Scanner-App, die Scans per Intent an den Browser sendet.

Den Scan schreibt Industrial Kiosk Browser als Ganzes in das aktive Eingabefeld – auch in Shadow DOM und in iframes derselben Herkunft – und löst input- und change-Ereignisse aus, sodass auch Web-Apps mit React oder Vue den Wert übernehmen. Danach folgt ab Werk Enter als echter Tastendruck; Tab, beides oder nichts stellen Sie in der Konfiguration (scanner.terminator) oder je Seite per Meta-Tag ein, etwa <meta http-equiv="scanner" content="Enable,AutoTab"> für Tab statt Enter. Web-Apps, die den Wert des Feldes lesen – beim input- oder change-Ereignis oder bei Enter –, funktionieren so ohne Änderung; setzt eine Web-App den Scan aus einzelnen Tastendrücken zusammen, wertet sie stattdessen das Ereignis industrialkioskbrowser:scan aus. Hat kein Textfeld den Fokus, schreibt der Browser nichts ins Formular und sendet auch kein Enter oder Tab – das Scan-Ereignis erreicht die Seite trotzdem.

  • Für Web-Entwickler

    Das abbrechbare Ereignis industrialkioskbrowser:scan liefert Code, Symbologie und Quelle, bevor etwas ins Feld geschrieben wird; mit preventDefault() übernimmt die Seite den Scan selbst. Die JavaScript-API window.IndustrialKioskBrowser löst den Scan per Soft-Trigger aus (IndustrialKioskBrowser.scanner.trigger()), schaltet den Scanner ab und an, gibt Töne, Vibration und Hinweise aus – nur für erlaubte Hosts und mit aktueller Android System WebView.

  • Kioskmodus

    Werkzeug- und Systemleisten ausblenden, Beenden ausblenden oder mit Kennwort schützen; als dediziertes Gerät (Device Owner) im Lock-Task-Modus.

  • URL-Allowlist

    Mit einer Allowlist öffnet der Browser nur Seiten erlaubter Hosts samt Subdomains; Navigationen im Hauptfenster und Formular-POSTs zu anderen Hosts werden gestoppt, bevor sie laden.

  • Bildschirmtastatur nach Bedarf

    Auf Wunsch erscheint die Tastatur nicht beim Antippen eines Feldes, sondern nur über die Tastatur-Schaltfläche oder eine Taste.

  • Konfiguration per MDM

    Eine JSON-Datei – als Managed Configuration aus jedem Android-Enterprise-EMM, als Datei oder per StageNow – für viele Geräte gleich.

Ehrlich gesagt: Industrial Kiosk Browser ist eine Vorabversion (0.x); Einstellungen, JSON-Format und JavaScript-API können sich noch ändern. Die Honeywell-Anbindung folgt der dokumentierten Intent-API des Herstellers und ist noch nicht auf einem Honeywell-Gerät geprüft; Android 8 bis 10 ist nur per Unit-Tests abgedeckt. Echter Kioskmodus (Lock Task) braucht ein EMM im Modus „dediziertes Gerät“ (Device Owner), sonst blendet der Browser nur das Beenden aus; eine leere Allowlist erlaubt jeden Host. Die JavaScript-API fehlt auf Servern mit Nicht-Standard-Port – Scans, Scan-Ereignis und Meta-Tags funktionieren dort. Releases bis 0.6.x hießen noch Pforte, davor EnterpriseBrowser; mit Version 0.7.0 bekommt der Browser seinen neuen Namen, und Android sieht ihn als neue App – kein Update an Ort und Stelle; die Konfiguration wird neu ausgerollt, die alte App entfernt. Bis der Signaturschlüssel für den neuen Paketnamen eingerichtet ist, enthalten Releases SBOM und Prüfsummen, aber keine APK. Industrial Kiosk Browser ist ein Webbrowser, keine Terminal-Emulation, und unterstützt nicht die besonderen Schnittstellen und Konfigurationsdateien anderer Industriebrowser. Er ist kostenlos unter der MIT-Lizenz. Der Download folgt mit der Veröffentlichung.

Unser Produkt

Industrial Kiosk Browser – Kiosk-Browser für Android-MDE-Geräte

Scans von DataWedge, Honeywell oder jeder Scanner-App per Intent direkt ins aktive Feld, danach ab Werk Enter, auf Wunsch Tab – mit Kioskmodus, URL-Allowlist und Konfiguration per MDM; ab Android 8.0.

Status: Verfügbar · Demnächst

Die Lösungswege im Vergleich

Wege, Barcode-Scans in eine Web-App auf dem MDE-Gerät zu bringen, im Vergleich
WegSo kommt der Scan anÄnderung an der Web-AppGerät auf die Web-App sperrenEinrichtungKosten
Standardbrowser mit Tastatur-AusgabeTastatureingabe in das Feld mit Fokuskeine, Fokus und Enter müssen aber passenper MDM (Lock-Task-Modus); welche Seiten erreichbar sind, hängt vom Browser abScanner-Profil je Gerät; DataWedge-Einstellungen lassen sich exportieren und per MDM verteilenkeine zusätzlichen
Web-App anpassenTastatureingabe, robust ausgewertetjawie beim StandardbrowserEntwicklung an der Web-AppEntwicklungsaufwand
Native App oder eigene App mit WebViewIntent, mit eigenem Codeje nach Umsetzungje nach UmsetzungEntwicklung, Pflege und Verteilung der AppEntwicklungsaufwand
Kiosk-Browser mit Scanner-AnbindungIntent oder Scanner-Schnittstelle des Herstellers; der Browser schreibt ins aktive Feldin der Regel keine, wenn die Web-App den Wert des Feldes liestje nach Produktje nach Produktje nach Produkt
Industrial Kiosk Browser (ICT Baden)Intent von DataWedge, Honeywell oder Scanner-App; Text ins aktive Feld, danach Enter oder Tabkeine, wenn sie den Wert des Feldes liest, sonst das Scan-Ereignis; optional Meta-Tags, JavaScript-APIKioskmodus; Lock Task nur als Device OwnerJSON per MDM (Managed Configuration), Datei oder StageNowkostenlos unter der MIT-Lizenz

„Je nach Produkt“ und „je nach Umsetzung“: Funktionen und Preise unterscheiden sich. Terminal-Emulation fehlt in der Tabelle mit Absicht – sie ist für Host-Anwendungen über Telnet, 5250, 3270 oder VT gedacht, nicht für Web-Apps. Industrial Kiosk Browser ist eine Vorabversion (0.x); die Honeywell-Anbindung ist noch nicht auf einem Gerät geprüft.

Was passt wann?

  • Der Scan fehlt nur im Browser, in anderen Apps klappt er

    Das Profil der Browser-App prüfen: aktiviert, zugeordnet, „Barcode Input“ und „Keystroke Output“ eingeschaltet.

  • Der Code kommt an, aber ohne Enter oder im falschen Feld

    Enter oder Tab per Basic Data Formatting anhängen und in der Web-App den Fokus auf das Scan-Feld setzen.

  • Bei langen Codes fehlen Zeichen

    Die Verzögerung nach jedem Zeichen in Schritten von 100 ms erhöhen.

  • Sie entwickeln die Web-App selbst

    Die Web-App robust machen – Fokus, input-Ereignis, Enter –, dann genügt die Tastatur-Ausgabe des Scanners.

  • Viele Geräte, eine feste Web-App, das Gerät soll gesperrt sein

    Ein Kiosk-Browser mit Scanner-Anbindung, zum Beispiel Industrial Kiosk Browser – derzeit eine Vorabversion (0.x), gesperrt als dediziertes Gerät (Device Owner).

  • Die Anwendung braucht Gerätefunktionen, die ein Browser nicht bietet

    Eine native App oder eine eigene App mit WebView.

  • Host-Anwendungen über Telnet, 5250 oder 3270

    Eine Terminal-Emulation – ein Webbrowser allein spricht diese Protokolle nicht.

Häufige Fragen

Warum kommt der Barcode-Scan nicht im Browser an?

Meist passt das Scanner-Profil der Browser-App nicht: Für den Browser gilt kein Profil mit Tastatur-Ausgabe, oder der Scan geht als Intent hinaus – den kann eine Webseite nicht empfangen. Oder es hat kein Eingabefeld den Fokus. Prüfen Sie in DataWedge (Zebra) bzw. in den Scanner-Einstellungen Ihres Geräts, welches Profil für den Browser gilt, und schalten Sie dort die Tastatur-Ausgabe ein.

Wie bekomme ich nach dem Scan automatisch Enter?

Über die Scanner-Einstellungen: In DataWedge hängt die Basic Data Formatting mit „Send ENTER key“ ein Enter an den Code an, mit „Send TAB key“ ein Tab. Bei Geräten anderer Hersteller zeigt das Handbuch, wo sich Enter oder Tab anhängen lässt. In Industrial Kiosk Browser, derzeit eine Vorabversion (0.x), folgt ab Werk auf jeden Scan, der in ein Feld geschrieben wird, ein Enter; Tab, beides oder nichts stellen Sie in der Konfiguration oder je Seite per Meta-Tag ein.

Muss ich meine Web-App für den Scanner anpassen?

Nicht unbedingt. Mit Tastatur-Ausgabe kommt der Scan an, als wäre er getippt; die Web-App braucht dann ein Eingabefeld mit Fokus und sollte den Wert des Feldes lesen, nicht einzelne Tastendrücke. Mit Industrial Kiosk Browser laufen vorhandene Web-Apps, die den Wert des Feldes lesen, ohne Änderung: Er schreibt den Scan ins aktive Feld und löst input- und change-Ereignisse aus. Industrial Kiosk Browser ist derzeit eine Vorabversion (0.x). Der Download folgt mit der Veröffentlichung.

Kann eine Webseite den Scanner direkt auslösen?

Im Standardbrowser in der Regel nicht: Scanner-Befehle wie der Soft-Trigger von DataWedge sind Android-Intents, die eine App sendet – eine Webseite hat darauf keinen Zugriff. Dort löst die Scan-Taste des Geräts aus. In Industrial Kiosk Browser, derzeit eine Vorabversion (0.x), löst eine Web-App den Scan über die JavaScript-API mit IndustrialKioskBrowser.scanner.trigger() aus – auf erlaubten Hosts mit aktueller Android System WebView, nicht auf Servern mit Nicht-Standard-Port.

Warum fehlen beim Scannen Zeichen im Browser?

Eine mögliche Ursache: Der Code kommt schneller, als die App ihn annimmt. In DataWedge hilft die Verzögerung nach jedem Zeichen in der Tastatur-Ausgabe („Inter-character delay“): Zebra empfiehlt, sie in Schritten von 100 ms zu erhöhen, bis die Fehler verschwinden, höchstens bis 1000 ms. Industrial Kiosk Browser, derzeit eine Vorabversion (0.x), schreibt den Scan dagegen als Ganzes ins Feld, nicht Zeichen für Zeichen.

Welcher Browser eignet sich für MDE-Geräte mit Scanner?

Für wenige Geräte kann der vorinstallierte Browser mit richtig eingestellter Tastatur-Ausgabe genügen. Für viele Geräte mit einer festen Web-App passt ein Kiosk-Browser mit Scanner-Anbindung: Er nimmt den Scan selbst an, kann das Gerät auf die Web-App beschränken und wird per MDM konfiguriert. Industrial Kiosk Browser ist ein solcher Browser, kostenlos unter der MIT-Lizenz – derzeit als Vorabversion (0.x); gesperrt wird das Gerät als dediziertes Gerät (Device Owner) mit Allowlist, die Honeywell-Anbindung ist noch nicht auf einem Gerät geprüft. Der Download folgt mit der Veröffentlichung.

Weitere Ratgeber

Industrial Kiosk Browser ist ein eigenständiges Produkt von ICT Baden und nicht mit Zebra Technologies oder Honeywell verbunden. Zebra, DataWedge und StageNow sind Marken von Zebra Technologies, Honeywell ist eine Marke von Honeywell International; Android ist eine Marke von Google LLC, JavaScript eine Marke von Oracle, Unicode eine eingetragene Marke von Unicode, Inc.; React und Vue sind Marken ihrer jeweiligen Inhaber. Sie werden nur genannt, um Funktionen und Kompatibilität zu beschreiben.

Kontakt

Fragen zu Ihrem Einsatz?

Schreiben Sie uns, wofür Sie eine Lösung suchen – wir melden uns persönlich.

info@ict-baden.de +49 172-7207196

Seboldstraße 9, 76227 Karlsruhe · Anfahrt