package Ġcom . react native hint request picker Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity . RESULT _ OK Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . facebook . react . bridge .* Ċ import Ġcom . facebook . react . modules . core . Device Event Manager Module . RCT Device EventEmitter Ċ import Ġcom . google . android . gms . auth . api . credentials . Credential Ċ import Ġjavax . annotation . Nullable ĊĊ Ċ class ĠHint Request Picker Module ( private Ġval Ġreact Context : ĠReact ApplicationContext ) Ġ: ĠReact Context Base Java Module ( react Context ), ĠActivity EventListener Ġ{ ĊĠĠĠ Ġval Ġhint Picker Ġ: ĠHint Request Picker ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠ Ġreact Context . add Activity EventListener ( this ); ĊĠĠĠĠĠ Ġhint Picker Ġ= ĠHint Request Picker ( react Context ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Hint Request Picker " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠExample Ġmethod ĊĠĠĠ Ġ// ĠSee Ġhttps :// react native . dev / docs / native - modules - android ĊĠĠĠ Ġ@ React Method ĊĠĠĠ Ġfun Ġget PhoneNumber () Ġ{ ĊĠĠĠĠĠ Ġhint Picker . get PhoneNumber (); ĊĠĠĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġget Google Account () Ġ{ ĊĠĠĠ ĠLog . d (" Hint ĠRequest ĠModule ", Ġ" Getting ĠEmail "); ĊĠĠĠ Ġhint Picker . get Google Account (); ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsend Event ( eventName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nullable Ġparams : ĠWrit able Map ) Ġ{ ĊĠĠĠ Ġreact Context ĊĠĠĠĠĠ Ġ. get JS Module ( RCT Device EventEmitter :: class . java ) Ġ// supply Ġthe Ġresult Ġin Ġparams ĊĠĠĠĠĠ Ġ. emit ( eventName , Ġparams ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Result ( activity : ĠActivity ?, Ġrequest Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠ Ġif ( data Ġ== Ġnull ){ ĊĠĠĠĠĠ Ġreturn ; ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( request Code Ġ=== ĠConstants . PHONE _ P ICK ER _ REQUEST ) Ġ{ ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠArguments . create Map () ĊĠĠĠĠĠ Ġif Ġ( result Code Ġ=== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredential : ĠCredential Ġ= Ġdata . get Parcelable Extra ( Credential . EXTRA _ KEY ) ĊĠĠĠĠĠĠĠ Ġval ĠphoneNumber Ġ= Ġcredential . getId (); ĊĠĠĠĠĠĠĠ Ġmap . putString (" phoneNumber ", ĠphoneNumber ); ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . putString (" phoneNumber ", Ġnull ); ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġsend Event ( Constants . PHONE _ SELECTED _ EVENT , Ġmap ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġif Ġ( request Code Ġ=== ĠConstants . EMAIL _ P ICK ER _ REQUEST ) Ġ{ ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠArguments . create Map () ĊĠĠĠĠĠ Ġif Ġ( result Code Ġ=== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredential : ĠCredential Ġ= Ġdata . get Parcelable Extra ( Credential . EXTRA _ KEY ) ĊĠĠĠĠĠĠĠ Ġmap . putString (" given Name ", Ġcredential . given Name ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" name ", Ġcredential . name ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" id ", Ġcredential . id ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" email ", Ġcredential . id ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" family Name ", Ġcredential . family Name ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" profile Picture Uri ", Ġcredential . profile Picture Uri . toString ()); ĊĠĠĠĠĠĠĠ Ġmap . putString (" account Type ", Ġcredential . account Type ); ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . putString (" email ", Ġnull ); ĊĠĠĠĠĠĠĠ Ġmap . putString (" id ", Ġnull ); ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġsend Event ( Constants . EMAIL _ SELECTED _ EVENT , Ġmap ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Constants (): ĠMap < String , ĠAny >? Ġ{ ĊĠĠĠ Ġval Ġconstants : ĠMutable Map < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠ Ġconstants [" PHONE _ SELECTED _ EVENT "] Ġ= ĠConstants . PHONE _ SELECTED _ EVENT ĊĠĠĠ Ġconstants [" EMAIL _ SELECTED _ EVENT "] Ġ= ĠConstants . EMAIL _ SELECTED _ EVENT ĊĠĠĠ Ġreturn Ġconstants ĊĠ Ġ} ĊĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{} Ċ } Ċ