package Ġcom . s yle im an . my foot prints . presentation Layer . activities . main Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Sender Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . Google Api Availability Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġcom . google . android . gms . drive . Drive Ċ import Ġcom . s yle im an . my foot prints . R Ċ import Ġcom . s yle im an . my foot prints . common . Log Tags Ċ import Ġcom . s yle im an . my foot prints . presentation Layer . activities . I Activity Base Callback Ċ import Ġcom . s yle im an . my foot prints . presentation Layer . external Intent s . External Activities Codes Ċ Ċ /** ĠAuthentication Ġin Ġactivity Ġ Ġ*/ Ċ class ĠIn Activity Google Drive Auth ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext : ĠActivity , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcomplete Callback : ĠFunction 1 < Boolean , ĠUnit >) ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtrue Ġ- Ġconnected Ġsuccessfully ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠGoogle ApiClient . Connection Callbacks , ĠGoogle ApiClient . On Connection Failed Listener Ċ { ĊĠĠĠ Ġprivate Ġvar Ġgoogle ApiClient : ĠGoogle ApiClient ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhas Attempts Ġ= Ġfalse ĊĊĠĠĠ Ġ/** Ġ Ġ*/ ĊĠĠĠ Ġfun Ġstart Auth () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġgoogle ApiClient Ġ= ĠGoogle ApiClient . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Drive . API ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Scope ( Drive . SCOPE _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Scope ( Drive . SCOPE _ APP FOLDER ) Ġ// Ġrequired Ġfor ĠApp ĠFolder Ġsample ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Connection Callbacks ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Connection Failed Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" Start Ġconnect ") ĊĠĠĠĠĠĠĠ Ġgoogle ApiClient !!. connect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Connected ( bundle : ĠBundle ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" On Connected ") ĊĠĠĠĠĠĠĠ Ġgoogle ApiClient !!. disconnect () ĊĠĠĠĠĠĠĠ Ġcomplete ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Connection Sus pended ( i : ĠInt ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Sus pended ") ĊĠĠĠĠĠĠĠ Ġcomplete ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Connection Failed ( connection Result : ĠConnection Result ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= Ġconnection Result . errorCode ĊĊĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠError Ġcode Ġis : Ġ" Ġ+ Ġconnection Result . errorCode ) ĊĠĠĠĠĠĠĠ Ġif Ġ( errorCode Ġ== ĠConnection Result . NETWORK _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠNetwork Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! connection Result . has Resolution ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠWithout Ġresolution ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Api Availability . getInstance (). getError Dialog ( context , ĠerrorCode , Ġ 0 ) Ġ// Ġshow Ġthe Ġlocalized Ġerror Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . complete ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Attempts ) ĠĠĠĠĠĠĠ Ġ// ĠOnly Ġone Ġattempt ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠNo Ġattempts ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( errorCode Ġ== ĠConnection Result . SIGN _ IN _ REQUIRED ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠSign In Ġrequired ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Attempts Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠI Activity Base Callback ). show Ok Dialog ( R . string . google _ drive _ auth _ dialog ) Ġ// ĠShow Ġdialog Ġwhy Ġwe Ġneed Ġto Ġuse ĠG D ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry ĠĠĠĠĠĠĠĠ Ġ// FullScreen Progress . Show ( context ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Code Ġ= ĠExternal Activities Codes . Google Drive Auth . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Log Tags . GD _ AUTH , Ġ" on Connection Failed . ĠStart Ġresolution ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Result . start Resolution For Result ( context , Ġactivity Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠIntent Sender . Send Intent Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . complete ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplete ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠWhen Ġauth Ġcompleted Ġ Ġ*/ ĊĠĠĠ Ġfun Ġon Auth Completed ( success : ĠBoolean ) Ġ= Ġcomplete ( success ) ĊĊĠĠĠ Ġ/** Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcomplete ( isConnected : ĠBoolean ) Ġ= Ġ Ġcomplete Callback . invoke ( isConnected ) ĠĠĠĠĠĠĠĠ Ġ// ĠComplete Ċ }