Skip to Content
Android SDKOperationsTroubleshooting

Troubleshooting

Reader not detected

  • Nothing in readers, nothing in readerErrors → the reader isn’t plugged in or its vendor id isn’t in device_filter.xml / VendorCodes. Confirm the id via UsbManager.deviceList.
  • Works on stock Android, fails on a manufacturer-customized buildUSB_DEVICE_ATTACHED is reaching only a manifest <receiver>. Register a manifest receiver for the USB attach action and route it to requestPermissions() / 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 manifest device_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 / clientSecret are correct and issued for this environment.
  • serviceUrl points 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 → verifyEnrollmentmatch. Ensure the service is up to date.

See also Handle failure modes.