package Ġcom . tern ary op . utils . dialog . app Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . content . pm . Resolve Info Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroid . widget . TextView Ċ import Ġcom . tern ary op . utils . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġd ave Ġon Ġ 0 1 / 0 5 / 1 4 . Ċ Ġ* ĠHelper Ġdialog Ġto Ġselect Ġapp Ġfrom Ġinstalled Ċ Ġ*/ Ċ class ĠApp Picker Dialog ( context : ĠContext , Ġprivate Ġval Ġfull Path : ĠString , Ġprivate Ġval ĠmimeType : ĠString ) ĊĠĠĠ Ġ: ĠDialog ( context ), ĠAdapter View . On ItemClickListener , ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġinflater : ĠLayoutInflater ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġresolve Info Adapter : ĠResolve Info Adapter ĊĠĠĠ Ġprivate Ġvar Ġmanager : ĠPackage Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdialog ClickListener : ĠDialog Interface . OnClickListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġselected App : ĠResolve Info ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġval Ġdefault Viewer Radio : ĠRadio Button ĊĠĠĠ Ġprivate Ġval Ġdefault Viewer Per File Radio : ĠRadio Button ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . dialog _ app _ picker ) ĊĊĠĠĠĠĠĠĠ ĠsetTitle ( context . getString ( R . string . open _ with _ title )) ĊĠĠĠĠĠĠĠ Ġinflater Ġ= Ġcontext . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġmanager Ġ= ĠgetContext (). package Manager ĊĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . cancel Button ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġdefault Viewer Radio Ġ= ĠfindViewById < View >( R . id . default _ viewer ) Ġas ĠRadio Button ĊĠĠĠĠĠĠĠ Ġdefault Viewer Per File Radio Ġ= ĠfindViewById < View >( R . id . default _ viewer _ per _ file ) Ġas ĠRadio Button ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mime Type . startsWith (" */ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Viewer Radio . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠmimeType . split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġcontext . resources . getString ( R . string . default _ viewer _ specific _ mime _ type _ label , Ġtype [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Viewer Radio . text Ġ= Ġlabel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Viewer Per File Radio . isChecked Ġ= ĠApp Picker Utils . has Default Viewer ( context , Ġfull Path ) ĊĊĠĠĠĠĠĠĠ Ġresolve Info Adapter Ġ= ĠResolve Info Adapter ( context ) ĊĠĠĠĠĠĠĠ Ġresolve Info Adapter . addAll ( get Activities From MimeType ( mime Type )) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠfindViewById < View >( R . id . list ) Ġas ĠListView ĊĠĠĠĠĠĠĠ Ġlist . adapter Ġ= Ġresolve Info Adapter ĊĠĠĠĠĠĠĠ Ġlist . on ItemClickListener Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġv . id ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== ĠR . id . cancel Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Open App () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected App Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( default Viewer Radio . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġdefault Ġpath Ġ( if Ġany ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Picker Utils . reset Default Viewer ( context , Ġfull Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠmimeType . split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type . size Ġ== Ġ 2 Ġ&& Ġtype [ 0 ] Ġ!= Ġ"*" Ġ&& Ġtype [ 1 ] Ġ!= Ġ"* ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġselected App !!. activity Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Picker Utils . setDefault Viewer ( context , ĠmimeType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . application Info . packageName , Ġactivity . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( default Viewer Per File Radio . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġselected App !!. activity Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Picker Utils . setDefault Viewer ( context , Ġfull Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . application Info . packageName , Ġactivity . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog ClickListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ClickListener !!. onClick ( this , ĠDialog Interface . BUTTON _ POSITIVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Open App ClickListener ( dialog ClickListener : ĠDialog Interface . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . dialog ClickListener Ġ= Ġdialog ClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Activities From MimeType ( mime Type : ĠString ): ĠList < Resolve Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġnull ) ĊĠĠĠĠĠĠĠ Ġintent . type Ġ= ĠmimeType ĊĠĠĠĠĠĠĠ Ġval Ġresolve Infos Ġ= Ġmanager !!. query Intent Activities ( intent , ĠPackage Manager . MATCH _ DEFAULT _ ONLY ) ĊĠĠĠĠĠĠĠ Ġresolve Infos . sort With ( Comparator Ġ{ Ġlhs , Ġrhs Ġ-> Ġlhs . load Label ( manager ). toString (). compareTo ( rhs . load Label ( manager ). toString ()) Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve Infos ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( parent : ĠAdapter View <* >, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected App Ġ= Ġresolve Info Adapter . getItem ( position ) ĊĠĠĠĠĠĠĠ Ġon Open App () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠResolve Info Adapter ( context : ĠContext ) Ġ: ĠArray Adapter < Resolve Info >( context , Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfl ated View : ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠViewHolder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfl ated View Ġ= Ġinflater !!. inflate ( R . layout . list _ app _ picker _ row _ image _ text , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġ= ĠViewHolder ( in fl ated View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfl ated View . tag Ġ= Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfl ated View Ġ= ĠconvertView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġ= Ġinfl ated View . tag Ġas ĠViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// android . google source . com / platform / packages / apps / Launcher 3 / +/ master / src / com / android / launcher 3 / Third Party Wall paper Picker ListAdapter . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolve Info Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . text . text Ġ= Ġresolve Info !!. load Label ( manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image . setImage Drawable ( resolve Info . load Icon ( manager )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfl ated View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠViewHolder ( vi : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġtext Ġ= Ġvi . findViewById < View >( R . id . text 1 ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġimage Ġ= Ġvi . findViewById < View >( R . id . image 1 ) Ġas ĠImageView ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ