The QR Scan module captures the QR code on the back of an ID, decodes its identity data, and sends it to the server. Your Incode Flow or Workflow configuration determines whether the module runs and what the decoded payload is used for.
There is no Dashboard equivalent for this module, so you cannot use integration Pattern 3 to add it. You must use Pattern 1 or 2, adding the module to a FlowConfig in code as shown on this page.
QR Scan requires camera access. The SDK requests the camera permission during the flow.
Add QR Scan
Add the module with the no-argument
addQRScan()overload for default behavior, oraddQRScan(showTutorials)to control whether the tutorial screens appear:flowConfigBuilder.addQRScan() // or with the tutorial option: flowConfigBuilder.addQRScan(showTutorials = true)flowConfigBuilder.addQRScan(); // or with the tutorial option: flowConfigBuilder.addQRScan(true);
- If your flow also uses Conference, Approval, or an INE validation step, add them after QR Scan.
FlowConfig.Builder.build()throwsModuleConfigurationExceptionif QR Scan follows any of these steps.
Example
The example below adds QR Scan with tutorials shown and reads the decoded value from the result.
val flowConfig: FlowConfig = FlowConfig.Builder()
.addQRScan(showTutorials = true)
.build()
val onboardingListener: OnboardingListener = object : OnboardingListener() {
override fun onQRScanCompleted(qrScanResult: QRScanResult) {
// Read the decoded QR value
val decoded = qrScanResult.value
}
override fun onError(error: Throwable) {}
override fun onUserCancelled() {}
}
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener)
FlowConfig flowConfig = new FlowConfig.Builder()
.addQRScan(true)
.build();
IncodeWelcome.OnboardingListener onboardingListener = new IncodeWelcome.OnboardingListener() {
@Override
public void onQRScanCompleted(@NonNull QRScanResult qrScanResult) {
// Read the decoded QR value
String decoded = qrScanResult.value;
}
@Override
public void onError(@NonNull Throwable error) {}
@Override
public void onUserCancelled() {}
};
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener);
Configuration Options
QR Scan has no Builder. Its single option is supplied through the addQRScan overload or the QRScan constructor.
| Setting | Description |
|---|---|
showTutorials |
When true (the default), shows the tutorial screens that explain the QR scan process before capture. |
For the complete option set, see QRScan in API Reference.
Result
QR Scan delivers a QRScanResult through the onQRScanCompleted(QRScanResult) callback on the OnboardingListener. Key fields include:
value: The value decoded from the scanned QR code;nullwhen unavailable.- Fields inherited from
BaseResult:resultCode: TheResultCodefor this result.error: WhenresultCodeisERROR, theThrowablethat caused it; otherwise,null.deviceStats: TheDeviceStatssnapshot of the device state when the result was produced.motionStatus: Device motion assessment during capture. One of the following:UNCLEAR: Motion could not be determined; the default.PASS: Device motion was within acceptable limits.FAIL: Excessive device motion was detected.
Errors surface through OnboardingListener.onError(Throwable). If the decoded QR code cannot be uploaded to the server, the SDK delivers a QRCodeUploadException.
For all fields, see QRScanResult in API Reference.