package Ġcom . wz . jet pack demo Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . permission x . gu olin dev . Permission X Ċ import Ġcom . wz . jet pack demo . databinding . MainActivity Binding Ċ import Ġcom . wz . jet pack demo . ui . Base View Binding Activity Ċ Ċ class ĠMainActivity Ġ: ĠBase View Binding Activity < MainActivity Binding >() Ġ{ ĊĊĠĠĠ Ġval ĠTAG Ġ= ĠMainActivity :: class . java . simple Name ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" onCreate ") ĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ĊĠĠĠĠĠĠĠ ĠsetUp Bottom ( nav Host Fragment . nav Controller ) ĊĠĠĠĠĠĠĠ ĠPermission X . init ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. permissions ( Manifest . permission . READ _ EXTERNAL _ STORAGE , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Ġ{ Ġall Granted , Ġgranted List , Ġdenied List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" All Ġpermissions Ġare Ġgranted ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" These Ġpermissions Ġare Ġdenied : Ġ$ den ied List ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġm ars Widget Provider Ġ= ĠM ars Widget Provider () ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠ Ġintent Filter . addAction (" com . wz . jet pack demo . action ") ĊĠĠĠĠĠĠĠ Ġintent Filter . addAction (" android . app widget . action . APP WIDGET _ UPDATE ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠsetUp Bottom ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbottom Nav Ġ= Ġbinding . bottom Navigation ĊĠĠĠĠĠĠĠ Ġbottom Nav . setup With Nav Controller ( nav Controller ) ĊĠĠĠĠĠĠĠ Ġbottom Nav . setOn Navigation ItemSelected Listener Ġ{ item : ĠMenuItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠNav Options . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pop Up To ( nav Controller . current Destination !!. id , true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Launch Single Top ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( item . itemId , null , options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Navigation ItemSelected Listener Ġ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View Binding () = ĠMainActivity Binding . inflate ( layout Inflater ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Resume ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" onStart ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on New Intent , time =${ intent ?. getLong Extra (" time ", Ġ 0 L )} ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Pause ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Stop ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Destroy ") ĊĠĠĠ Ġ} Ċ Ċ }