Scanners in "Intent output" mode deliver barcodes via broadcast, which
nothing in the app received, so scans never reached any field. Add
BroadcastScannerIntegration (Urovo, Newland and other common actions,
configurable in AppConfig) and inject the text into the focused field,
or the first visible search/text field, using the native value setter
plus an input event so React-controlled inputs accept it. Optionally
sends Enter afterwards (SCANNER_SEND_ENTER).
Add a logging-only dispatchKeyEvent pass-through to diagnose why
keystroke-mode scans don't reach the orders search field.
Ignore SamplePage/ and update README and CLAUDE.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
onCheckIsTextEditor() returning false prevented the InputConnection
from being established, breaking hardware key relay from the barcode
scanner into HTML inputs. Always return true — the other suppression
layers handle keyboard hiding.
Move the keyboard toggle from the top-right corner gesture (which
blocked a UI feature) into the admin dialog (7 taps top-left corner).
The dialog now shows three options: exit, toggle keyboard, or cancel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tap the top-right 60dp corner 5 times within 3 seconds to toggle
the soft keyboard on or off. Default is off (suppressed). The toggle
controls all suppression layers: JS inputmode injection, the
MutationObserver, InputMethodManager hide calls, and the WebView's
EditorInfo flags. A toast confirms the current state in Spanish.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Returning null from onCreateInputConnection() prevented the Chromium
renderer from relaying hardware key events into HTML inputs, breaking
scanner input on the Urovo CT58C. Return the real InputConnection from
super and rely on the multi-layer keyboard suppression (JS inputmode,
InputMethodManager, EditorInfo flags, manifest flags) which is already
proven to work on this device.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace BuildConfig.DEBUG (not generated by AGP 8.x) with unconditional
WebView debugging — safe for a kiosk app since it requires ADB access.
Add two additional layers of keyboard suppression for devices where the
null InputConnection alone is insufficient: inject JavaScript that sets
inputmode="none" on all inputs via MutationObserver, and force-hide the
keyboard via InputMethodManager on page load and window focus changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use the Jk logo from smart.joykoo.mx as the launcher icon (legacy PNGs
and adaptive icon foreground at all densities). Add SSL/HTTP error
handling so failures show the error overlay instead of a silent white
screen. Add JS console logging to logcat and WebView debugging for
debug builds. Relax mixed content mode to compatibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>