package Ġnet . gin i . pay . app screen api Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġnet . gin i . android . Document Metadata Ċ import Ġnet . gin i . android . G ini Api Type Ċ import Ġnet . gin i . android . capture . Document Import Enabled File Types Ċ import Ġnet . gin i . android . capture . network . G ini Capture Network Api Ċ import Ġnet . gin i . android . capture . network . G ini Capture Network Service Ċ import Ġnet . gin i . android . capture . requirements . Requirements Report Ċ import Ġnet . gin i . pay . app screen api . databinding . Activity Main Binding Ċ import Ġnet . gin i . pay . app screen api . util . Permission Handler Ċ import Ġnet . gin i . pay . app screen api . util . Simple Spinner Select Listener Ċ import Ġnet . gin i . pay . bank . G ini Bank Ċ import Ġnet . gin i . pay . bank . capture . Capture Configuration Ċ import Ġnet . gin i . pay . bank . capture . Capture Contract Ċ import Ġnet . gin i . pay . bank . capture . Capture Import Contract Ċ import Ġnet . gin i . pay . bank . capture . Capture Result Ċ import Ġnet . gin i . pay . bank . network . get Accounting Network Api Ċ import Ġnet . gin i . pay . bank . network . get Accounting Network Service Ċ import Ġnet . gin i . pay . bank . network . getDefault Network Api Ċ import Ġnet . gin i . pay . bank . network . getDefault Network Service Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpermission Handler Ġ= ĠPermission Handler ( this ) ĊĠĠĠ Ġprivate Ġval Ġcapture Launcher Ġ= Ġregister For Activity Result ( Capture Contract (), Ġ:: on Capture Result ) ĊĠĠĠ Ġprivate Ġval Ġcapture Import Launcher Ġ= Ġregister For Activity Result ( Capture Import Contract (), Ġ:: on Capture Result ) ĊĠĠĠ Ġprivate Ġval Ġno Extr actions Launcher Ġ= Ġregister For Activity Result ( Start Capture Contract (), Ġ:: onStart Again Result ) ĊĊĠĠĠ Ġprivate Ġvar Ġapi Type : ĠG ini Api Type Ġ= ĠG ini Api Type . DEFAULT ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġshow Versions ( binding ) ĊĠĠĠĠĠĠĠ Ġset View Listeners ( binding ) ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Intent Action View Or Send ( intent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart G ini Capture Sdk ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure G ini Capture () Ġ{ ĊĠĠĠĠĠĠĠ ĠG ini Bank . release Capture ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġ( network Service , Ġnetwork Api ) Ġ= Ġget Network Service () ĊĠĠĠĠĠĠĠ ĠG ini Bank . set Capture Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCapture Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Service Ġ= Ġnetwork Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Api Ġ= Ġnetwork Api , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Import Enabled File Types Ġ= ĠDocument Import Enabled File Types . PDF _ AND _ I MAGES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Import Enabled Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqr Code Sc anning Enabled Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Page Enabled Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflash Button Enabled Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Tracker Ġ= ĠG ini Capture Event Tracker ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Network Service (): ĠPair < G ini Capture Network Service , ĠG ini Capture Network Api > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠclientId Ġ= ĠgetString ( R . string . gin i _ api _ client _ id ) ĊĠĠĠĠĠĠĠ Ġval Ġclient Secret Ġ= ĠgetString ( R . string . gin i _ api _ client _ secret ) ĊĠĠĠĠĠĠĠ Ġval Ġdomain Ġ= Ġ" example . com " ĊĠĠĠĠĠĠĠ Ġval Ġdocument Metadata Ġ= ĠDocument Metadata (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Branch Id (" G ini Bank Example Android ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd (" App Flow ", Ġ" Screen API ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( api Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ini Api Type . DEFAULT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Ġ= ĠgetDefault Network Service ( this , ĠclientId , Ġclient Secret , Ġdomain , Ġdocument Metadata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġto ĠgetDefault Network Api ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ini Api Type . ACCOUNT ING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Ġ= Ġget Accounting Network Service ( this , ĠclientId , Ġclient Secret , Ġdomain , Ġdocument Metadata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġto Ġget Accounting Network Api ( network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart G ini Capture Sdk ( intent : ĠIntent ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( permission Handler . grant Permission ( Manifest . permission . CAMERA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Ġ= ĠG ini Bank . check Capture Requirements ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! report . is Ful filled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Un fulfilled Requirements Toast ( report ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure G ini Capture () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ini Bank . start Capture Flow For Intent ( capture Import Launcher , Ġthis @ MainActivity , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ini Bank . start Capture Flow ( capture Launcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Capture Result ( result : ĠCapture Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCapture Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Extr actions Activity . getStart Intent ( this , Ġresult . extr actions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCapture Result . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Error : Ġ${ result . code } Ġ${ result . message }", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCapture Result . Empty Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Extr actions Launcher . launch ( Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCapture Result . Cancel Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonStart Again Result ( start Again : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( start Again ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ini Bank . start Capture Flow ( capture Launcher ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Un fulfilled Requirements Toast ( reports : ĠRequirements Report ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreports . requirement Reports . join ToString ( separator Ġ= Ġ"\ n ") Ġ{ Ġreport Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! report . is Ful filled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ report . requirement Id }: Ġ${ report . details }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset View Listeners ( binding : ĠActivity Main Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . button Start Scanner . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart G ini Capture Sdk () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . gin i Api Type Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠSimple Spinner Select Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Type Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠG ini Api Type . ACCOUNT ING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠG ini Api Type . DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġshow Versions ( binding : ĠActivity Main Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . text G ini Capture Version . text Ġ= Ġ" G ini ĠCapture ĠSDK Ġv ${ net . gin i . android . capture . Build Config . VERSION _ NAME }" ĊĠĠĠĠĠĠĠ Ġbinding . text App Version . text Ġ= Ġ" v ${ Build Config . VERSION _ NAME }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Intent Action View Or Send ( intent : ĠIntent ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠIntent . ACTION _ VIEW Ġ== Ġintent . action Ġ|| ĠIntent . ACTION _ SEND Ġ== Ġintent . action Ġ|| ĠIntent . ACTION _ SEND _ MULTIPLE Ġ== Ġintent . action Ċ }