package Ġcom . m ichael c arr ano . detect ived roid . data Ċ Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġcom . m ichael c arr ano . detect ived roid . data . model . App Entity Ċ import Ġio . reactivex . Single Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠApp Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġpackage Manager : ĠPackage Manager Ċ ) Ġ: ĠApp Repository Ġ{ ĊĊĠĠĠ Ġ// ĠTODO : ĠInvest igate Ġpackage Manager . get Installed Packages () Ġvs Ġpackage Manager . get Installed Applications () ĊĠĠĠ Ġoverride Ġfun Ġget Applications (): ĠSingle < List < App Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapps Ġ= Ġmutable ListOf < App Entity >() ĊĊĠĠĠĠĠĠĠ Ġpackage Manager . get Installed Applications ( 0 ). forEach Ġ{ Ġapp Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser App Ġ= Ġapp Info . flags Ġand ĠApplication Info . FLAG _ SYSTEM Ġ<= Ġ 0 Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Info . flags Ġand ĠApplication Info . FLAG _ UPDATED _ SYSTEM _ APP Ġ!= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Entity Ġ= ĠApp Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . getApplication Label ( app Info ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Info . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info ( app Info . packageName , Ġ 0 ). version Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser App ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapps . add ( app Entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . just ( apps ) ĊĠĠĠ Ġ} Ċ } Ċ