package Ġorg . w ats i . u hp . managers Ċ Ċ import Ġandroid . app . Activity Ċ import Ġcom . google . android . play . core . app update . App Update Info Ċ import Ġcom . google . android . play . core . app update . App Update Manager Ċ import Ġcom . google . android . play . core . app update . App Update ManagerFactory Ċ import Ġcom . google . android . play . core . install . Install State Updated Listener Ċ import Ġcom . google . android . play . core . install . model . App Update Type Ċ import Ġcom . google . android . play . core . install . model . Install Status Ċ import Ġcom . google . android . play . core . install . model . Update Availability Ċ import Ġorg . w ats i . device . managers . Logger Ċ Ċ class ĠApp Update Manager ( ĊĠĠĠ Ġval Ġactivity : ĠActivity , ĊĠĠĠ Ġval Ġlogger : ĠLogger Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġapp Update Manager : ĠApp Update Manager Ġ= ĠApp Update ManagerFactory . create ( activity ) ĊĠĠĠ Ġprivate Ġvar Ġinstall State Updated Listener : ĠInstall State Updated Listener ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠWe Ġcan Ġalso Ġdo Ġsome Ġmore Ġfancy Ġstuff Ġlike Ġdon 't Ġcheck Ġupdate Ġmore Ġonce Ġin Ġa Ġsingle Ġday , Ġetc . ĊĠĠĠĠĠĠĠ Ġinstall State Updated Listener Ġ= ĠInstall State Updated Listener Ġ{ Ġinstall State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstall Status Ġ= Ġinstall State ?. install Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( install Status Ġ== ĠInstall Status . DOWN LOADED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" App Ġis Ġdownloaded . ĠComp leting Ġinstallation Ġnow ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Update Manager . complete Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warning (" Install State Ġstatus Ġwas : Ġ$ install Status ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp Update Manager . register Listener ( install State Updated Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Update Available ( on Update Available : Ġ( app Update Info : ĠApp Update Info ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Update Manager . app Update Info . add On Success Listener Ġ{ Ġapp Update Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavailability Ġ= Ġapp Update Info . update Availability () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( availability Ġ== ĠUpdate Availability . UPDATE _ AVAILABLE Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Update Info . is Update Type Allowed ( App Update Type . IM MEDI ATE )) Ġ{ ĠĠ Ġ// Ġ Ġcheck Ġfor Ġthe Ġtype Ġof Ġupdate Ġflow Ġyou Ġwant ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Update Ġis Ġavailable ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate Available ( app Update Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp Update Manager . app Update Info . add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Update Manager . unregister Listener ( install State Updated Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CODE _ FLEX IBLE _ UPDATE Ġ= Ġ 1 7 3 6 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Update ( app Update Info : ĠApp Update Info ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Update Manager . start Update Flow For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Update Info , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Update Type . IM MEDI ATE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ FLEX IBLE _ UPDATE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ