package Ġcom . example . android . proj eman age . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . example . android . proj eman age . R Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . google . firebase . storage . Storage Reference Ċ import Ġkotlinx . android . synt hetic . main . activity _ create _ board .* Ċ import Ġmodels . Board Ċ import Ġjava . io . IOException Ċ Ċ class ĠCreate Board Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ STORAGE _ PERMISSION _ CODE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġ Ġval ĠP ICK _ IMAGE _ REQUEST _ CODE Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Selected Image File Uri i : ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm UserName : ĠString ĊĠĠĠ Ġprivate Ġ Ġvar Ġm Board Image URL Ġ: ĠString Ġ= Ġ"" ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ create _ board ) ĊĊĠĠĠĠĠĠĠ Ġwindow . set Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ FULL SCREEN , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠsetUp ActionBar () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Constants . NAME )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm UserName Ġ= Ġintent . getString Extra ( Constants . NAME ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġiv _ profile _ card _ user _ image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Context Compat . check Self Permission ( this , Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ== PackageManager . PERMISSION _ GRAN TED ){ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// To Ġget Ġthe Ġimage Ġfrom Ġexternal Ġstorage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Image Chooser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Profile Activity . READ _ STORAGE _ PERMISSION _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ create _ user . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( m Selected Image File Uri i != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Board User Image () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress Dialog (" Please Ġwait ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Board () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊ ĊĊĠĠĠ Ġ}// On Create ĊĊĊĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif ( request Code Ġ== ĠREAD _ STORAGE _ PERMISSION _ CODE ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Image Chooser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}// ov v 1 ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image Chooser (){ ĊĠĠĠĠĠĠĠ Ġval Ġgallery Intent Ġ= ĠIntent ( Intent . ACTION _ P ICK , ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ) ĠĠ Ġ// Permission Ġto Ġexcess Ġimage Ġfrom Ġexternal ĠStorage ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( gallery Intent , ĠP ICK _ IMAGE _ REQUEST _ CODE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġrequest Code Ġ== ĠMy Profile Activity . P ICK _ IMAGE _ REQUEST _ CODE Ġ&& Ġdata !!. data Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Selected Image File Uri i Ġ= Ġdata . data Ġ// It Ġgives Ġuri Ġof Ġthe Ġimage ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( m Selected Image File Uri i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ board _ place _ holder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv _ profile _ card _ user _ image ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch ( e : ĠIOException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġboard Created Successfully (){ ĊĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠsetUp ActionBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar _ card _ board _ activity ) ĊĠĠĠĠĠĠĠ Ġval Ġaction bar Ġ= Ġsupport ActionBar ĊĠĠĠĠĠĠĠ Ġif Ġ( action bar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction bar . set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction bar . set Home As Up Indicator ( R . drawable . ic _ white _ arrow _ back _ 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoolbar _ card _ board _ activity . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupload Board User Image (){ ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog (" Please Ġwait ") ĊĠĠĠĠĠĠĠ Ġif ( m Selected Image File Uri i Ġ!= Ġnull ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Where Ġwe Ġwant Ġto Ġstore Ġthe Ġimage Ġin Ġfirebase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ref : ĠStorage Reference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Storage . getInstance (). reference . child ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" BOARD _ IMAGE " Ġ+ ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"." Ġ+ ĠgetFile Extension ( m Selected Image File Uri i )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ref . put File ( m Selected Image File Uri i !! ). add On Success Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Board ĠImage ĠURL ", task Snapshot . metadata !!. reference !!. download Url . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Snapshot . metadata !!. reference !!. download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Download " Ġ, Ġuri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Board Image URL Ġ= Ġuri . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Board () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Error ", Toast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Board () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġassigned User ArrayList : ĠArrayList < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġassigned User ArrayList . add ( getCurrent UserID ()) ĊĊĠĠĠĠĠĠĠ Ġvar Ġboard Ġ= ĠBoard ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet _ board _ name . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Board Image URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm UserName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassigned User ArrayList ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠFire Store Class (). create Board ( this , board ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetFile Extension ( uri : ĠUri ?): ĠString ? { ĊĠĠĠĠĠĠĠ Ġreturn ĠMime TypeMap . get Singleton () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getExtension From MimeType ( content Resolver . getType ( uri !! )) ĊĠĠĠ Ġ} Ċ Ċ }// MainActivity