package Ġcom . se ang hay . studio example Ċ Ċ import Ġandroid . Manifest . permission . READ _ EXTERNAL _ STORAGE Ċ import Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . app . Share Compat Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . room . Room Ċ import Ġcom . se ang hay . studio example . adapter . Story ListAdapter Ċ import Ġkotlinx . android . synt hetic . main . activity _ home .* Ċ import Ġjava . io . File ĊĊ Ċ class ĠHome Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġadapter : ĠStory ListAdapter Ġ= ĠStory ListAdapter () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Database : ĠApp Database ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ home ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġapp Database Ġ= ĠRoom . database Builder ( this , ĠApp Database :: class . java , Ġ" app - v 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġset RecyclerView Configurations () ĊĊĠĠĠĠĠĠĠ Ġbutton Create . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Create . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Create . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġadapter . on Item Clicked Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay ( it . path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . onDelete Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Database . story Dao (). delete ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( it . path ). delete Re cursively () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadapter . on Shared Click Ġ= Ġ{ Ġshare Video ( it . path ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREAD _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( READ _ EXTERNAL _ STORAGE , ĠWRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Create . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Folder () Ġ{ ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġapp Database . story Dao (). getAll Flow able (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . patch ( it . sorted By Descending Ġ{ Ġd Ġ-> Ġd . createdAt Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Video ( filePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠFile Provider . get Uri For File ( this , Ġ"$ packageName . file provider ", Ġfile ) ĊĊĠĠĠĠĠĠĠ ĠShare Compat . Intent Builder . from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Stream ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType (" video / mp 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Chooser Title (" Share Ġvideo ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start Chooser () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( path )) ĊĠĠĠĠĠĠĠ Ġintent . setData And Type ( Uri . parse ( path ), Ġ" video / mp 4 ") ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 ) ĊĠĠĠĠĠĠĠ Ġbutton Create . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code Ġ== Ġ 0 Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset RecyclerView Configurations () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( true ) ĊĠĠĠ Ġ} Ċ }