package Ġcom . sh ere pen ko . android . launch ite asy . li ved ata Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . sh ere pen ko . android . launch ite asy . data . AppState Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠApp State LiveData ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext Ċ ) Ġ: ĠMutable LiveData < Event < AppState >>() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" AppState " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġreceiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( intent . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ PACKAGE _ AD DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( TAG ). i (" New ly Ġinstalled Ġpackage : Ġ${ intent . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( Event ( AppState . AD DED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ PACKAGE _ CHANGED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( TAG ). i (" Package Ġstate Ġchanged : Ġ${ intent . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( Event ( AppState . UPDATED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ PACKAGE _ RE MOVED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( TAG ). i (" Package Ġfully Ġremoved : Ġ${ intent . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( Event ( AppState . RE MOVED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ PACKAGE _ REPL AC ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( TAG ). i (" Package Ġhas Ġbeen Ġreplaced : Ġ${ intent . data }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( Event ( AppState . UPDATED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġintent Filter Ġ= ĠIntent Filter (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ AD DED ) ĊĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ CHANGED ) ĊĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ RE MOVED ) ĊĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ REPL AC ED ) ĊĠĠĠĠĠĠĠ Ġadd Data Scheme (" package ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Value ( Event ( AppState . UPDATED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Active () ĊĠĠĠĠĠĠĠ Ġcontext . register Receiver ( receiver , Ġintent Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Inactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Inactive () ĊĠĠĠĠĠĠĠ Ġcontext . unregister Receiver ( receiver ) ĊĠĠĠ Ġ} Ċ } Ċ