/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 5 ĠAnd re ĠT iet z Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . and ret iet z . ret ro auth Ċ Ċ import Ġandroid . accounts . Abstract Account Authenticator Ċ import Ġandroid . accounts . Account Ċ import Ġandroid . accounts . Account Authenticator Response Ċ import Ġandroid . accounts . Account Manager Ċ import Ġandroid . accounts . Network ErrorException Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ Ċ /** Ċ Ġ* ĠThis ĠAccount Authenticator Ġis Ġa Ġvery Ġbasic Ġimplementation Ġof ĠAndroid 's Ċ Ġ* Ġ[ Abstract Account Authenticator ]. ĠThis Ġimplementation Ġis Ġintention al Ġas Ġempty Ġas Ġit Ġis . ĠCause Ġof Ġthis Ġis , Ġthat Ċ Ġ* Ġit 's Ġexecuted Ġin Ġa Ġdifferent Ġprocess , Ġwhich Ġmakes Ġit Ġdifficult Ġto Ġprovide Ġlogin Ġendpoints Ġfrom Ċ Ġ* Ġthe Ġapp Ġprocess Ġin Ġhere . Ċ Ġ* Ċ Ġ* ĠNOTE : ĠThis Ġclass Ġcannot Ġbe Ġreplaced Ġwith Ġa Ġkotlin Ġversion Ġyet , Ġsince ĠAndroid Ġcannot Ġload ĠAuth entic ators Ċ Ġ* Ġthat Ġare Ġnon Ġjava Ġonce Ċ Ġ*/ Ċ class ĠAccount Authenticator ( ĊĠ Ġcontext : ĠContext , ĊĠ Ġprivate Ġval Ġaction : ĠString , ĊĠ Ġprivate Ġval Ġcleanup UserData : Ġ( account : ĠAccount ) Ġ-> ĠUnit Ċ ) Ġ: ĠAbstract Account Authenticator ( context ) Ġ{ ĊĊĠ Ġoverride Ġfun Ġadd Account ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaccount Type : ĠString , ĊĠĠĠ Ġauth Credential Type : ĠString ?, ĊĠĠĠ Ġrequired Features : ĠArray < String > ?, ĊĠĠĠ Ġoptions : ĠBundle ĊĠ Ġ) Ġ= Ġcreate Auth Bundle ( response , Ġaction , Ġaccount Type , Ġauth Credential Type , Ġnull ) ĊĊĠ Ġoverride Ġfun Ġget AuthToken ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠ Ġauth TokenType : ĠString , ĊĠĠĠ Ġoptions : ĠBundle ĊĠ Ġ) Ġ= Ġcreate Auth Bundle ( response , Ġaction , Ġaccount . type , Ġauth TokenType , Ġaccount . name ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreates Ġan ĠIntent Ġto Ġopen Ġthe ĠActivity Ġto Ġlogin . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġresponse Ġneeded Ġparameter ĊĠĠ Ġ* Ġ@ param Ġaccount Type ĠThe Ġaccount ĠType ĊĠĠ Ġ* Ġ@ param Ġcredential Type ĠThe Ġrequested Ġcredential - type ĊĠĠ Ġ* Ġ@ param Ġaccount Name ĠThe Ġname Ġof Ġthe Ġaccount ĊĠĠ Ġ* Ġ@ return Ġa Ġbundle Ġto Ġopen Ġthe Ġactivity ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġcreate Auth Bundle ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaction : ĠString , ĊĠĠĠ Ġaccount Type : ĠString , ĊĠĠĠ Ġcredential Type : ĠString ?, ĊĠĠĠ Ġaccount Name : ĠString ? ĊĠ Ġ): ĠBundle Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠ Ġput Parcelable ( ĊĠĠĠĠĠ ĠAccount Manager . KEY _ INT ENT , ĊĠĠĠĠĠ ĠIntent ( action ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput Extra ( Account Manager . KEY _ ACCOUNT _ AUTHENT IC ATOR _ RESPONSE , Ġresponse ) ĊĠĠĠĠĠĠĠ Ġput Extra ( Account Manager . KEY _ ACCOUNT _ TYPE , Ġaccount Type ) ĊĠĠĠĠĠĠĠ Ġput Extra ( KEY _ CRED ENTIAL _ TYPE , Ġcredential Type ) ĊĠĠĠĠĠĠĠ Ġaccount Name ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġput Extra ( Account Manager . KEY _ ACCOUNT _ NAME , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġconfirm Credentials ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠ Ġoptions : ĠBundle ? ĊĠ Ġ) Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġedit Properties ( response : ĠAccount Authenticator Response , Ġaccount Type : ĠString ) Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġget AuthToken Label ( auth Credential Type : ĠString ) Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġupdate Credentials ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠ Ġauth Credential Type : ĠString , ĊĠĠĠ Ġoptions : ĠBundle ĊĠ Ġ): ĠBundle ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġhas Features ( ĊĠĠĠ Ġresponse : ĠAccount Authenticator Response , ĊĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠ Ġfeatures : ĠArray < String > ĊĠ Ġ) Ġ= Ġnull ĊĊĠ Ġ@ Suppress Lint (" Check Result ") ĊĠ Ġ@ Throws ( Network ErrorException :: class ) ĊĠ Ġoverride Ġfun Ġget Account Removal Allowed ( response : ĠAccount Authenticator Response , Ġaccount : ĠAccount ): ĠBundle ? Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġsuper . get Account Removal Allowed ( response , Ġaccount ) ĊĠĠĠ Ġif Ġ( ĊĠĠĠĠĠ Ġresult Ġ!= Ġnull Ġ&& Ġresult . containsKey ( Account Manager . KEY _ BOOLEAN _ RESULT ) Ġ&& ĊĠĠĠĠĠ Ġresult . getBoolean ( Account Manager . KEY _ BOOLEAN _ RESULT , Ġfalse )) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcleanup UserData ( account ) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . w (" Authentication Service ", Ġ" Your Ġcleanup Ġmethod Ġthrew Ġan Ġexception :", Ġexception ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġinternal Ġconst Ġval ĠKEY _ CRED ENTIAL _ TYPE Ġ= Ġ" account _ credential _ type " ĊĠ Ġ} Ċ } Ċ