package Ġcom . react n atives amp len ativ em odule Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . annotation . Nullable Ċ import Ġcom . facebook . react . bridge .* Ċ import Ġcom . facebook . react . modules . core . Device Event Manager Module . RCT Device EventEmitter Ċ import Ġjava . util .* ĊĊ Ċ class ĠSample Native Module ( react Context : ĠReact ApplicationContext ) Ġ: ĠReact Context Base Java Module ( react Context ) Ġ{ ĊĠ Ġprivate Ġval Ġactivity Result Listener Ġ= Ġobject Ġ: ĠActivity EventListener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( activity : ĠActivity ?, Ġrequest Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠP ICK _ MEDIA _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpick Media Promise ?. resolve ( Arguments . create Map (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġthis . putString ( PARAM _ MEDIA _ URI _ KEY , Ġdata ?. data ?. toString ()) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġpick Media Promise Ġ= Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġprivate Ġval Ġlifecycle EventListener Ġ= Ġobject Ġ: ĠLifecycle EventListener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Host Resume () Ġ{ ĊĠĠĠĠĠ Ġsend Lifecycle Event ( Arguments . create Map (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . putString ( PARAM _ EVENT _ NAME _ KEY , Ġ" resume ") ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Host Pause () Ġ{ ĊĠĠĠĠĠ Ġsend Lifecycle Event ( Arguments . create Map (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . putString ( PARAM _ EVENT _ NAME _ KEY , Ġ" pause ") ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Host Destroy () Ġ{ ĊĠĠĠĠĠ Ġsend Lifecycle Event ( Arguments . create Map (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . putString ( PARAM _ EVENT _ NAME _ KEY , Ġ" destroy ") ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġprivate Ġvar Ġpick Media Promise : ĠPromise ? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġreact Context . add Activity EventListener ( activity Result Listener ) ĊĠĠĠ Ġreact Context . add Lifecycle EventListener ( lifecycle EventListener ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetName () Ġ= Ġ" Sample Native Module " ĊĊĠ Ġoverride Ġfun Ġget Constants (): ĠMap < String , ĠAny >? Ġ{ ĊĠĠĠ Ġval Ġconstants : ĠMutable Map < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠ Ġconstants [ MEDIA _ TYPE _ PH OTO _ KEY ] Ġ= Ġ" image /* " ĊĠĠĠ Ġconstants [ MEDIA _ TYPE _ VIDEO _ KEY ] Ġ= Ġ" video /* " ĊĠĠĠ Ġconstants [ MEDIA _ TYPE _ AUDIO _ KEY ] Ġ= Ġ" audio /* " ĊĠĠĠ Ġconstants [ LI FE CYCLE _ EVENT _ LIST ENER _ TYPE _ KEY ] Ġ= ĠL IF EC Y CLE _ EVENT _ LIST ENER _ TYPE ĊĠĠĠ Ġreturn Ġconstants ĊĠ Ġ} ĊĊĠ Ġ// ĠExample Ġmethod ĊĠ Ġ// ĠSee Ġhttps :// facebook . github . io / react - native / docs / native - modules - android ĊĠ Ġ@ React Method ĊĠ Ġfun Ġget Device Name ( promise : ĠPromise ) Ġ{ ĊĠĠĠ Ġpromise . resolve ( android . os . Build . MODEL ) ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġsum ( a : ĠInt , Ġb : ĠInt , Ġcallback : ĠCallback ) Ġ{ ĊĠĠĠ Ġcallback . invoke ( a Ġ+ Ġb ) ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġpick Media ( params : ĠRead able Map , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠ Ġval Ġactivity Ġ= Ġcurrent Activity ĊĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġpromise . reject ( ERROR _ ACTIVITY _ IS _ NOT _ READY , Ġ" Activity Ġis Ġnot Ġready ") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠ Ġval Ġmedia Type Ġ= Ġparams . getString ( PARAM _ MEDIA _ TYPE _ KEY ) ĊĠĠĠ Ġintent . type Ġ= Ġwhen Ġ( media Type ) Ġ{ ĊĠĠĠĠĠ ĠMED IA _ TYPE _ IMAGE , ĊĠĠĠĠĠ ĠMED IA _ TYPE _ VIDEO , ĊĠĠĠĠĠ ĠMED IA _ TYPE _ AUDIO Ġ-> Ġmedia Type ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġpromise . reject ( ERROR __ UNKNOWN _ MEDIA _ TYPE , Ġ"$ media Type Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ GET _ CONTENT ĊĠĠĠ Ġthis . pick Media Promise Ġ= Ġpromise ĊĠĠĠ Ġactivity . startActivity For Result ( ĊĠĠĠĠĠ ĠIntent . create Chooser ( intent , Ġparams . getString ( PARAM _ TITLE _ KEY )), ĊĠĠĠĠĠ ĠP ICK _ MEDIA _ REQUEST _ CODE ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsend Lifecycle Event (@ Nullable Ġparams : ĠWrit able Map ) Ġ{ ĊĠĠĠ Ġthis . react ApplicationContext ĊĠĠĠĠĠ Ġ. get JS Module ( RCT Device EventEmitter :: class . java ) ĊĠĠĠĠĠ Ġ. emit ( LI FE CYCLE _ EVENT _ LIST ENER _ TYPE , Ġparams ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠL IF EC Y CLE _ EVENT _ LIST ENER _ TYPE _ KEY Ġ= Ġ" LI FE CYCLE _ EVENT _ LIST ENER _ TYPE " ĊĠĠĠ Ġprivate Ġconst Ġval ĠL IF EC Y CLE _ EVENT _ LIST ENER _ TYPE Ġ= Ġ" Lifecycle EventListener " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ PH OTO _ KEY Ġ= Ġ" PH OTO _ MEDIA _ TYPE " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ IMAGE Ġ= Ġ" image /* " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ VIDEO _ KEY Ġ= Ġ" VIDEO _ MEDIA _ TYPE " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ VIDEO Ġ= Ġ" video /* " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ AUDIO _ KEY Ġ= Ġ" AUDIO _ MEDIA _ TYPE " ĊĠĠĠ Ġprivate Ġconst Ġval ĠMED IA _ TYPE _ AUDIO Ġ= Ġ" audio /* " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ MEDIA _ URI _ KEY Ġ= Ġ" media Uri " ĊĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ MEDIA _ TYPE _ KEY Ġ= Ġ" media Type " ĊĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ TITLE _ KEY Ġ= Ġ" title " ĊĠĠĠ Ġprivate Ġconst Ġval ĠPARAM _ EVENT _ NAME _ KEY Ġ= Ġ" eventName " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠP ICK _ MEDIA _ REQUEST _ CODE Ġ= Ġ 1 1 ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠERROR _ ACTIVITY _ IS _ NOT _ READY Ġ= Ġ" ERROR _ ACTIVITY _ IS _ NOT _ READY " ĊĠĠĠ Ġprivate Ġconst Ġval ĠERROR __ UNKNOWN _ MEDIA _ TYPE Ġ= Ġ" ERROR __ UNKNOWN _ MEDIA _ TYPE " ĊĠ Ġ} Ċ } Ċ