/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGreen ĠM ush room Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 Ġme . gm . clean er . plugin . module Ċ Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . Process Ċ import Ġandroid . os . Remote Exception Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġme . gm . clean er . plugin . I Manager Service Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠB inder ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġbinder : ĠI Binder ?) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġservice : ĠI Manager Service ? Ġ= ĠI Manager Service . Stub . as Interface ( binder ) ĊĠĠĠ Ġprivate Ġval Ġ_ remote Sp Cache LiveData Ġ= ĠMutable LiveData ( Sparse Array < String >()) ĊĠĠĠ Ġval Ġremote Sp Cache LiveData : ĠLive Data < Sparse Array < String >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ remote Sp Cache LiveData ĊĠĠĠ Ġval Ġremote Sp Cache : ĠSparse Array < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ remote Sp Cache LiveData . value !! ĊĊĠĠĠ Ġfun Ġnotify Remote Sp Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ remote Sp Cache LiveData . post Value ( remote Sp Cache ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġping Binder () Ġ= Ġbinder ?. ping Binder () Ġ== Ġtrue ĊĊĠĠĠ Ġval Ġmodule Version : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġservice !!. module Version ĊĊĠĠĠ Ġfun Ġget Installed Packages ( flags : ĠInt ): ĠList < Package Info > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġservice !!. get Installed Packages ( Process . my Uid () Ġ/ ĠA ID _ USER _ OFFSET , Ġflags ). list ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠRemoteException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Package Info ( packageName : ĠString ): ĠPackage Info ? Ġ= ĊĠĠĠĠĠĠĠ Ġservice !!. get Package Info ( packageName , Ġ 0 , ĠProcess . my Uid () Ġ/ ĠA ID _ USER _ OFFSET ) ĊĊĠĠĠ Ġfun Ġread Sp ( who : ĠInt ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġremote Sp Cache [ who , Ġservice !!. read Sp ( who ). also Ġ{ Ġremote Sp Cache . put ( who , Ġit ) Ġ}] ĊĊĠĠĠ Ġfun Ġwrite Sp ( who : ĠInt , Ġwhat : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( remote Sp Cache [ who ] Ġ!= Ġwhat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice !!. write Sp ( who , Ġwhat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Sp Cache . put ( who , Ġwhat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Remote Sp Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear All Tables () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice !!. clear All Tables () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpackage Usage Times ( table : ĠString , Ġpackage Names : ĠList < String >): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġservice !!. package Usage Times ( table , Ġpackage Names ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠA ID _ USER _ OFFSET Ġ= Ġ 1 0 0 0 0 0 ĊĠĠĠ Ġ} Ċ } Ċ