package Ġio . ik ws 4 . we ij u . servers Ċ Ċ import Ġandroid . app .* Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . IB inder Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġio . ik ws 4 . we ij u . R Ċ import Ġio . ik ws 4 . we ij u . broadcast s . A pk Receiver Ċ import Ġio . ik ws 4 . we ij u . ui . activity s . MainActivity ĊĊ Ċ class ĠA pk Server Ġ: ĠService () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠA PK _ SERVER _ NOTIFICATION _ ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ ID Ġ= Ġ" apk Ġforeground Ġnotification " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ NAME Ġ= Ġ" apk Ġlistener " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapk Receiver : ĠA pk Receiver ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġapk Receiver Ġ= ĠA pk Receiver () ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ AD DED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Action ( Intent . ACTION _ PACKAGE _ RE MOVED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Data Scheme (" package ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregister Receiver ( apk Receiver , Ġintent Filter ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ å¾ħ ä¼ĺåĮĸ ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Intent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( this , Ġ 1 , Ġmain Intent , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( this , ĠCHAN NEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Large Icon ( Bitmap Factory . decode Resource ( resources , ĠR . drawable . ic _ face )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( getString ( R . string . foreground _ notification )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( AP K _ SERVER _ NOTIFICATION _ ID , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ face ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Large Icon ( Bitmap Factory . decode Resource ( resources , ĠR . drawable . ic _ face )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( getString ( R . string . foreground _ notification )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( AP K _ SERVER _ NOTIFICATION _ ID , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( p 0 : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Foreground ( true ) ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( apk Receiver ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channel ( CHANNEL _ ID , ĠCHAN NEL _ NAME , ĠNotification Manager . IMPORT ANCE _ NONE ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock screen Visibility Ġ= ĠNotification . VIS IBILITY _ PUBLIC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlight Color Ġ= Ġget Color ( R . color . color Accent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġserver Ġ= Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠ Ġserver . create Notification Channel ( channel ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ