...
When your app is requested to handle an image or a PDF file, your activity (declaring the intent filter shown above) is launched or resumed (onNewIntentonNewetent()
) with the Intent
having ACTION_VIEW
or ACTION_SEND
.
...
If the Intent
passes the above check then register an activity result handler with the CaptureFlowImportContract()
and pass the Intent
to GiniBank.startCaptureFlowForIntentstartCaptureFlowFortent()
:
Code Block | ||
---|---|---|
| ||
fun configureCapture() { GiniBank.setCaptureConfiguration(this, CaptureConfiguration( fileImportEnabled = true, ... // other configuration options ) ) } // Use the androidx's Activity Result API to register a handler for the capture result. val captureImportLauncher = registerForActivityResult(CaptureFlowImportContract()) { result: CaptureResult -> when (result) { is CaptureResult.Success -> { handleExtractions(result.specificExtractions) } is CaptureResult.Error -> { when (result.value) { is ResultError.Capture -> { val captureError: GiniCaptureError = (result.value as ResultError.Capture).giniCaptureError handleCaptureError(captureError) } is ResultError.FileImport -> { val fileImportError = result.value as ResultError.FileImport handleFileImportError(fileImportError) } } } CaptureResult.Empty -> { handleNoExtractions() } CaptureResult.Cancel -> { handleCancellation() } } } fun handleFileImportError(exception: ImportedFileValidationException) { var message = ... exception.validationError?.let { validationError -> // Get the default message message = getString(validationError.textResource) // Or use custom messages message = when (validationError) { FileImportValidator.Error.TYPE_NOT_SUPPORTED -> ... FileImportValidator.Error.SIZE_TOO_LARGE -> ... FileImportValidator.Error.TOO_MANY_PDF_PAGES -> ... FileImportValidator.Error.PASSWORD_PROTECTED_PDF -> ... FileImportValidator.Error.TOO_MANY_DOCUMENT_PAGES -> ... } } AlertDialog.Builder(this) .setMessage(message) .setPositiveButton("OK") { _, _ -> finish() } .show() } fun startGiniBankSDKForImportedFile(importedFileIntent: Intent) { // Configure capture first configureCapture(); fileImportCancellationToken = GiniBank.startCaptureFlowForIntent(captureImportLauncher, this, importedFileIntent) } |
Detecting when your app is the default app for opening PDFs or images
It is easy for Android users to unintentionally set your app as the default for opening PDFs or images. To inform users about it and allow them to undo it the SDK detects if your app was selected as the default app and shows the Clear Defaults Dialog to inform users and to allow them to clear the defaults for your app in the Android settings.