package Ġcom . des mond . square camera . gallery View Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ Ċ class ĠImage Folder Ġ{ ĊĊĠĠĠ Ġfun ĠgetAll Shown Images Path ( activity : ĠActivity ): ĠArrayList < Album s > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri ĊĠĠĠĠĠĠĠ Ġval Ġcursor : ĠCursor ĊĠĠĠĠĠĠĠ Ġvar Ġcursor Bucket : ĠCursor ĊĠĠĠĠĠĠĠ Ġval Ġcolumn _ index _ data : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġcolumn _ index _ folder _ name : ĠInt ĊĠĠĠĠĠĠĠ Ġval ĠlistOf All Images Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġabsolute Path Of Image : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġalbum s List Ġ= ĠArrayList < Album s >() ĊĠĠĠĠĠĠĠ Ġvar Ġalbum : ĠAlbum s ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġval ĠBU CKET _ GROUP _ BY Ġ= Ġ" 1 ) ĠGROUP ĠBY Ġ 1 ,( 2 " ĊĠĠĠĠĠĠĠ Ġval ĠBU CKET _ ORDER _ BY Ġ= Ġ" MAX ( date taken ) ĠDESC " ĊĊĠĠĠĠĠĠĠ Ġuri Ġ= Ġandroid . provider . Media Store . Images . Media . EXTERNAL _ CONTENT _ URI ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . BUCKET _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . BUCKET _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . DATE _ TA KEN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . DATA ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcursor Ġ= Ġactivity . content Resolver . query ( uri , Ġprojection , ĠBU CKET _ GROUP _ BY , Ġnull , ĠBU CKET _ ORDER _ BY ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn _ index _ data Ġ= Ġcursor . getColumnIndex OrThrow ( Media Store . Media Columns . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn _ index _ folder _ name Ġ= Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getColumnIndex OrThrow ( Media Store . Images . Media . BUCKET _ DISPLAY _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Path Of Image Ġ= Ġcursor . getString ( column _ index _ data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" title _ apps ", Ġ" bucket Ġname :" Ġ+ Ġcursor . getString ( column _ index _ data )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ("% " Ġ+ Ġcursor . getString ( column _ index _ folder _ name ) Ġ+ Ġ"% ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠMedia Store . Images . Media . DATA Ġ+ Ġ" Ġlike Ġ? Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection Only Bucket Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Media Columns . DATA , ĠMedia Store . Images . Media . BUCKET _ DISPLAY _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Bucket Ġ= Ġactivity . content Resolver . query ( uri , Ġprojection Only Bucket , Ġselection , Ġselection Args , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" title _ apps ", Ġ" bucket Ġsize :" Ġ+ Ġcursor Bucket . count ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( absolute Path Of Image Ġ!= Ġ"" Ġ&& Ġabsolute Path Of Image Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf All Images . add ( absolute Path Of Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum s List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlbum s ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( column _ index _ folder _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Path Of Image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Bucket . count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġget ListOf Video Folders ( activity , Ġalbum s List ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠThis Ġfunction Ġis Ġresp os ible Ġto Ġread Ġall Ġvideos Ġfrom Ġall Ġfolders . ĊĠĠĠ Ġprivate Ġfun Ġget ListOf Video Folders ( activity : ĠActivity , Ġalbum s List : ĠArrayList < Album s >): ĠArrayList < Album s > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ĊĠĠĠĠĠĠĠ Ġvar Ġcursor Bucket : ĠCursor ĊĠĠĠĠĠĠĠ Ġvar Ġuri : ĠUri ĊĠĠĠĠĠĠĠ Ġval ĠBU CKET _ GROUP _ BY Ġ= Ġ" 1 ) ĠGROUP ĠBY Ġ 1 ,( 2 " ĊĠĠĠĠĠĠĠ Ġval ĠBU CKET _ ORDER _ BY Ġ= Ġ" MAX ( date taken ) ĠDESC " ĊĠĠĠĠĠĠĠ Ġval Ġcolumn _ index _ album _ name : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġcolumn _ index _ album _ video : ĠInt ĊĊĠĠĠĠĠĠĠ Ġuri Ġ= Ġandroid . provider . Media Store . Video . Media . EXTERNAL _ CONTENT _ URI ĊĊĠĠĠĠĠĠĠ Ġval Ġprojection 1 Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . BUCKET _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . BUCKET _ DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . DATE _ TA KEN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . DATA ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcursor Ġ= Ġactivity . content Resolver . query ( uri , Ġprojection 1 , ĠBU CKET _ GROUP _ BY , Ġnull , ĠBU CKET _ ORDER _ BY ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn _ index _ album _ name Ġ= Ġcursor . getColumnIndex OrThrow ( Media Store . Video . Media . BUCKET _ DISPLAY _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn _ index _ album _ video Ġ= Ġcursor . getColumnIndex OrThrow ( Media Store . Video . Media . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" title _ apps ", Ġ" bucket Ġvideo :" Ġ+ Ġcursor . getString ( column _ index _ album _ name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" title _ apps ", Ġ" bucket Ġvideo :" Ġ+ Ġcursor . getString ( column _ index _ album _ video )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Args Ġ= ĠarrayOf ("% " Ġ+ Ġcursor . getString ( column _ index _ album _ name ) Ġ+ Ġ"% ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠMedia Store . Video . Media . DATA Ġ+ Ġ" Ġlike Ġ? Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection Only Bucket Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Media Columns . DATA , ĠMedia Store . Video . Media . BUCKET _ DISPLAY _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Bucket Ġ= Ġactivity . content Resolver . query ( uri , Ġprojection Only Bucket , Ġselection , Ġselection Args , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" title _ apps ", Ġ" bucket Ġsize :" Ġ+ Ġcursor Bucket . count ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum s List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlbum s ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( column _ index _ album _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( column _ index _ album _ video ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Bucket . count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġalbum s List ĊĠĠĠ Ġ} Ċ }