Troubleshooting
Reader not detected
- Nothing in
readers, nothing inreaderErrors→ the reader isn’t plugged in or its vendor id isn’t indevice_filter.xml/VendorCodes. Confirm the id viaUsbManager.deviceList. - Works on stock Android, fails on a manufacturer-customized build →
USB_DEVICE_ATTACHEDis reaching only a manifest<receiver>. Register a manifest receiver for the USB attach action and route it torequestPermissions()/refreshDevices()— see Device discovery. - Detected after unplug/replug but not on cold start → make sure you call
startReaderDiscovery()at launch; the manager fast-paths already-permitted devices on init. - Permission dialog never appears → for EADAK/Aratek call
manager.requestPermissions()on the attach intent; SecuGen/BioMini rely on the manifestdevice_filter.
NoClassDefFoundError / UnsatisfiedLinkError at init
A vendor native library is missing for the device ABI. The AAR ships arm64-v8a + armeabi-v7a; the SecuGen U20 also needs libAlCamera. Test on a real arm device (not an x86 emulator) and confirm your app didn’t strip the bundled .sos.
AuthError / capture returns null with no sensor activity
The credential gate rejected the request (401/403) — the reader is intentionally not activated. Verify:
clientId/clientSecretare correct and issued for this environment.serviceUrlpoints at the right environment.
Confirm your credentials are valid and issued for this environment. See Authentication.
verifyEnrollment returns a 404 / “no template found”
Enroll stores an unverified print that verifyEnrollment then promotes. If you see a not-found on verify, confirm enroll succeeded first (check session.errors) and that you’re verifying the same enrollee + position. The two-step flow is required on all paths.
500 / decode error on enroll
If the Slade ID service returns a decode error on the submitted image, confirm the SDK version is current. Images are encrypted before transmission by default; a version mismatch between the SDK and service surfaces here — align versions.
Match works but verify fails after enroll
This can happen only if the backend auto-verified on enroll. The Slade ID service enforces two-step on all paths: enroll → verifyEnrollment → match. Ensure the service is up to date.
See also Handle failure modes.