package Ġsite . le os . apps . le sp as Ċ Ċ import Ġandroid . accounts . Account Manager Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . app . admin . Device Policy Manager Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġsite . le os . apps . le sp as . sync . Sync Adapter Ċ Ċ class ĠSystem Broadcast Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccounts Ġ= ĠAccount Manager . get ( context ). get Account sBy Type ( context . getString ( R . string . account _ type _ nc )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ== ĠAccount Manager . ACTION _ ACCOUNT _ RE MOVED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAPI Ġlevel Ġ 2 6 Ġrequired ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġour Ġaccount Ġhas Ġbeen Ġremoved , Ġdelete Ġall Ġuser Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġsupporting Ġmultiple ĠNC Ġaccount Ġby Ġchecking ĠKEY _ ACCOUNT _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getString ( Account Manager . KEY _ ACCOUNT _ TYPE , Ġ"") Ġ== Ġcontext . getString ( R . string . account _ type _ nc )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ). clear Application UserData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( accounts . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( intent . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġphone Ġowner Ġchanged , Ġdelete Ġall Ġuser Ġdata , Ġremove Ġaccounts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Policy Manager . ACTION _ DEVICE _ OWNER _ CHANGED -> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccount Manager . get ( context ). remove Account ( accounts [ 0 ], Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ). clear Application UserData () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ BOOT _ COMPLETED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTurn Ġon Ġperiodic Ġsync Ġafter Ġboot up ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Preference Manager . getDefault SharedPreferences ( context ). getBoolean ( context . getString ( R . string . sync _ pref _ key ), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Resolver . set Sync Autom atically ( accounts [ 0 ], Ġcontext . getString ( R . string . sync _ authority ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Resolver . add Periodic Sync ( accounts [ 0 ], Ġcontext . getString ( R . string . sync _ authority ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ Ġput Int ( Sync Adapter . ACTION , ĠSync Adapter . SYNC _ REMOTE _ CHANG ES ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ* Ġ 3 6 0 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClear Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . cacheDir . delete Re cursively () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }