/* Ċ Copyright Ġ 2 0 2 0 ĠRe think DNS Ġand Ġits Ġauthors Ċ Ċ Licensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ you Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ You Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ċ https :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ċ Unless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ distributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ WITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ See Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ limitations Ġunder Ġthe ĠLicense . Ċ */ Ċ Ċ package Ġcom . cel zero . br aved ns . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . cel zero . br aved ns . R Ċ import Ġcom . cel zero . br aved ns . ui . Bottom Sheet Fragment Ċ import Ġcom . cel zero . br aved ns . util . Utilities Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ class ĠA pk ListAdapter ( var Ġapk List : ĠArrayList < A pk >, Ġprivate Ġval Ġcontext : ĠContext ) Ġ: ĠRecyclerView . Adapter < A pk ListAdapter . A pk ListView Holder >() Ġ{ ĊĊĊĠĠĠ Ġvar Ġapk List Filtered Ġ: ĠArrayList < A pk > Ġ= ĠArrayList () ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġapk List Filtered . addAll ( apk List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate A pk List (){ ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠA pk ListView Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠA pk ListView Holder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . layout _ apk _ item , Ġparent , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk List ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠA pk ListView Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// print (" on Bind ViewHolder : Ġ"+ apk List [ position ]. app Info ) ĊĠĠĠĠĠĠĠ Ġholder . m Icon ImageView . setImage Drawable ( context . package Manager . getApplication Icon ( apk List [ position ]. packageName )) ĊĠĠĠĠĠĠĠ Ġholder . m Label TextView . text Ġ= apk List [ position ]. appName ĊĠĠĠĠĠĠĠ Ġ// holder . m Label TextView . text Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġcontext . package Manager . getApplication Label ( apk List . get ( position ). app Info ). toString () ĊĠĠĠĠĠĠĠ Ġ// holder . m Package TextView . text Ġ= Ġ" Tap Ġfor Ġmore ĠInfo " ĊĠĠĠĠĠĠĠ Ġ/* if ( position Ġ< Ġ 3 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon Indicator . setBackground Resource ( R . color . color Red _ 9 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim : ĠAnimation Ġ= ĠAlpha Animation ( 0 . 0 f , Ġ 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . set Duration ( 1 0 0 0 ) Ġ// You Ġcan Ġmanage Ġthe Ġblink ing Ġtime Ġwith Ġthis Ġparameter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . set Start Offset ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . set Repeat Mode ( Animation . RE VERSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . set Repeat Count ( Animation . INF IN ITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon Indicator . start Animation ( anim ) ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapk List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠFilter ĠClass ĊĠĠĠ Ġfun Ġfilter ( c : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġchar Text Ġ= Ġc ĊĠĠĠĠĠĠĠ Ġprintln (" apk List Ġ Ġ: Ġ"+ Ġapk List . size ) ĊĠĠĠĠĠĠĠ Ġprintln (" 1 Ġapk List ĠFilter ed Ġ: Ġ"+ Ġapk List Filtered . size ) ĊĠĠĠĠĠĠĠ Ġchar Text Ġ= Ġchar Text . toLowerCase ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġapk List . clear () ĊĠĠĠĠĠĠĠ Ġif Ġ( char Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" apk List ĠFilter ed Ġ: Ġ"+ Ġapk List Filtered . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk List . addAll ( apk List Filtered ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( wp Ġin Ġapk List Filtered ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wp . appName . toLowerCase ( Locale . getDefault ()). contains ( char Text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapk List . add ( wp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠA pk ListView Holder ( view : ĠView , Ġcontext : ĠContext , Ġapk List : ĠArrayList < A pk >) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġm Icon ImageView : ĠImageView Ġ= Ġview . findViewById ( R . id . apk _ icon _ iv ) ĊĠĠĠĠĠĠĠ Ġval Ġm Label TextView : ĠTextView Ġ= Ġview . findViewById ( R . id . apk _ label _ tv ) ĊĠĠĠĠĠĠĠ Ġval Ġm Package TextView : ĠTextView Ġ= Ġview . findViewById ( R . id . apk _ package _ tv ) ĊĠĠĠĠĠĠĠ Ġ// val Ġm Icon Indicator Ġ: ĠTextView Ġ= Ġview . findViewById ( R . id . status _ indicator ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// var Ġpermission List Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermission Details Ġ Ġ= ĠUtilities . get Permission Details ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapk List [ adapter Position ]. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" One ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpos Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( permission Details . requested Permissions Flags != null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Details . requested Permissions Flags . forEach Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (( it Ġand ĠPackage Info . REQUEST ED _ PERMISSION _ GRAN TED ) Ġ== ĠPackage Info . REQUEST ED _ PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Granted : Ġ"+ permission Details . requested Permissions [ pos ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Fragment Ġ= ĠBottom Sheet Fragment ( apk List [ adapter Position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrag Ġ= Ġcontext Ġas ĠFragment Activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Fragment . show ( frag . support FragmentManager , Ġbottom Sheet Fragment . tag ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġview Dialog Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . bottom _ sheet _ permission _ manager , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠBottom Sheet Dialog ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set ContentView ( view Dialog ) */ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* view Dialog . findViewById < TextView >( R . id . textView ). setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( apk List . get ( adapter Position ). packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . findViewById < TextView >( R . id . textView 2 ). setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( apk List . get ( adapter Position ). packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Dialog . findViewById < TextView >( R . id . textView 3 ). setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( apk List . get ( adapter Position ). packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊ Ċ }