package Ġcom . the wiz rd . simple weather . services Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroidx . work .* Ċ import Ġcom . the wiz rd . shared _ resources . Constants Ċ import Ġcom . the wiz rd . shared _ resources . location data . Location Data Ċ import Ġcom . the wiz rd . simple weather . widgets . Weather Widget Provider . Companion . EXTRA _ WIDGET _ IDS Ċ import Ġcom . the wiz rd . simple weather . widgets . Weather Widget Provider . Companion . EXTRA _ WIDGET _ TYPE Ċ import Ġcom . the wiz rd . simple weather . widgets . Widget Provider Info Ċ import Ġcom . the wiz rd . simple weather . widgets . Widget Type Ċ import Ġcom . the wiz rd . simple weather . widgets . Widget Updater Helper Ċ import Ġcom . the wiz rd . simple weather . widgets . Widget Utils Ċ Ċ class ĠWidget Worker ( app Context : ĠContext , Ġparams : ĠWorker Parameters ) Ġ: ĊĠĠĠ ĠCor outine Worker ( app Context , Ġparams ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACTION Ġ= Ġ" action " ĊĊĠĠĠĠĠĠĠ Ġ// ĠWidget ĠActions ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ REFRESH WIDGET Ġ= Ġ" Simple Weather . Droid . action . REFRESH _ WIDGET " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ RESET GPS WIDGET S Ġ= Ġ" Simple Weather . Droid . action . RESET _ GPS WIDGET S " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ REFRESH GPS WIDGET S Ġ= Ġ" Simple Weather . Droid . action . REFRESH _ GPS WIDGET S " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ REFRESH WIDGET S Ġ= Ġ" Simple Weather . Droid . action . REFRESH _ WIDGET S " ĊĊĠĠĠĠĠĠĠ Ġ// ĠEx tras ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ LOCATION NAME Ġ= Ġ" Simple Weather . Droid . extra . LOCATION _ NAME " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ LOCATION QUERY Ġ= Ġ" Simple Weather . Droid . extra . LOCATION _ QUERY " ĊĊĠĠĠĠĠĠĠ Ġfun Ġenqueue Refresh Widget ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Widget Ids : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo : ĠWidget Provider Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexp edited : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Mgr Ġ= ĠWork Manager . getInstance ( context . application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Widget Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exp edited ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Exp edited ( OutOf Quota Policy . RUN _ AS _ NON _ EX PED IT ED _ WORK _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Constraints . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( KEY _ ACTION , ĠACTION _ REFRESH WIDGET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put IntArray ( EXTRA _ WIDGET _ IDS , Ġapp Widget Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Int ( EXTRA _ WIDGET _ TYPE , Ġinfo . widget Type . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Mgr . enqueue ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġenqueue Refresh Widgets ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation : ĠLocation Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexp edited : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Mgr Ġ= ĠWork Manager . getInstance ( context . application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Widget Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exp edited ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Exp edited ( OutOf Quota Policy . RUN _ AS _ NON _ EX PED IT ED _ WORK _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Constraints . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( KEY _ ACTION , ĠACTION _ REFRESH WIDGET S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( EXTRA _ LOCATION QUERY , Ġlocation . query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Mgr . enqueue ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġenqueue Reset GPS Widgets ( context : ĠContext , Ġexp edited : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Mgr Ġ= ĠWork Manager . getInstance ( context . application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Widget Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exp edited ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Exp edited ( OutOf Quota Policy . RUN _ AS _ NON _ EX PED IT ED _ WORK _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Constraints . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( KEY _ ACTION , ĠACTION _ RESET GPS WIDGET S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Mgr . enqueue ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġenqueue Refresh GPS Widgets ( context : ĠContext , Ġexp edited : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Mgr Ġ= ĠWork Manager . getInstance ( context . application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠOne Time Work RequestBuilder < Widget Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exp edited ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Exp edited ( OutOf Quota Policy . RUN _ AS _ NON _ EX PED IT ED _ WORK _ REQUEST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Constraints ( Constraints . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( KEY _ ACTION , ĠACTION _ REFRESH GPS WIDGET S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Mgr . enqueue ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Foreground Info (): ĠFore ground Info Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠService Notification Helper . init Channel ( application Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFore ground Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠService Notification Helper . JOB _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠService Notification Helper . create Foreground Notification ( application Context ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm App Widget Manager Ġ= ĠApp Widget Manager . getInstance ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( input Data . getString ( KEY _ ACTION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ REFRESH WIDGET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Widget Ids Ġ= Ġinput Data . getInt Array ( EXTRA _ WIDGET _ IDS ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidget Type Ġ= ĠWidget Type . valueOf ( input Data . getInt ( EXTRA _ WIDGET _ TYPE , Ġ- 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠWidget Utils . get Widget Provider Info From Type ( widget Type ) Ġ?: Ġreturn @ run ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Updater Helper . refresh Widget ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm App Widget Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Widget Ids ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ REFRESH WIDGET S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Query Ġ= Ġinput Data . getString ( EXTRA _ LOCATION QUERY ) Ġ?: Ġreturn @ run ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Updater Helper . refresh Widgets ( application Context , Ġlocation Query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ RESET GPS WIDGET S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Updater Helper . reset GPS Widgets ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ REFRESH GPS WIDGET S Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Updater Helper . refresh Widgets ( application Context , ĠConstants . KEY _ GPS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠ Ġ} Ċ }