/** Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ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 . hu awei . warn my child . child . kotlin Ċ Ċ import Ġandroid . Manifest . permission Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . hu awei . ag connect . auth . AG Connect Auth Ċ import Ġcom . hu awei . ag connect . auth . Hw Id Auth Provider Ċ import Ġcom . hu awei . h ms . ads . Ad Listener Ċ import Ġcom . hu awei . h ms . ads . Ad Param Ċ import Ġcom . hu awei . h ms . ads . banner . Banner View Ċ import Ġcom . hu awei . h ms . support . api . entity . auth . Scope Ċ import Ġcom . hu awei . h ms . support . api . entity . common . Common Constant Ċ import Ġcom . hu awei . h ms . support . hw id . Hu awei Id Auth Manager Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Helper Ċ import Ġcom . hu awei . warn my child . child . R Ċ import Ġjava . util .* Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdefault Banner View : ĠBanner View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĠĠĠĠĠĠĠ Ġval Ġlogin Ġ= ĠfindViewById < View >( R . id . login _ button ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠAG Connect Auth . getInstance (). currentUser ĊĠĠĠĠĠĠĠ Ġload Default Banner Ad () ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Permissions ( this , Ġ* RUNTIME _ PERMISSION S )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠRUN TIME _ PERMISSION S , ĠREQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull Ġ&& Ġuser . uid . length Ġ> ĠUID _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġuser . uid , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Login Activity , ĠHome Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogin . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( this @ Login Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setTitle (" Loading ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhu awei Id Auth Params Helper Ġ= ĠHu awei Id Auth Params Helper ( Hu awei Id Auth Params . DEFAULT _ AUTH _ REQUEST _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope List : ĠMutable List < Scope > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope List . add ( Scope ( Common Constant . SCOPE . ACCOUNT _ BASE PROFILE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhu awei Id Auth Params Helper . set Scope List ( scope List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Params Ġ= Ġhu awei Id Auth Params Helper . set AccessToken (). create Params () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠHu awei Id Auth Manager . getService ( this @ Login Activity , Ġauth Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( service . signIn Intent , ĠSIGN _ IN _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġthe Ġdefault Ġbanner Ġad . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Default Banner Ad () Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Banner View Ġ= ĠfindViewById ( R . id . hw _ banner _ view ) ĊĠĠĠĠĠĠĠ Ġdefault Banner View ?. set Ad Listener ( ad Listener ) ĊĠĠĠĠĠĠĠ Ġdefault Banner View ?. set Banner Refresh ( REFRESH _ TIME . to Long ()) ĊĠĠĠĠĠĠĠ Ġval Ġad Param Ġ= ĠAd Param . Builder (). build () ĊĠĠĠĠĠĠĠ Ġdefault Banner View ?. load Ad ( ad Param ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. dismiss () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠSIGN _ IN _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Hu awei Id Task Ġ= ĠHu awei Id Auth Manager . parse Auth Result From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auth Hu awei Id Task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhu awei Account Ġ= Ġauth Hu awei Id Task . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , ĠgetString ( R . string . access _ token _ l able ) Ġ+ Ġhu awei Account . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// est ablish connection (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠH w Id Auth Provider . credential With Token ( hu awei Account . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAG Connect Auth . getInstance (). signIn ( credential ). add On Success Listener Ġ{ Ġsign In Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠonSuccess ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġsign In Result . user ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( getString ( R . string . signin _ success _ l able ), Ġ"" Ġ+ Ġuser . uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Login Activity , ĠHome Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġestablish connection (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> ĠLog . w ( getString ( R . string . sign _ in _ failed _ l able ), Ġe ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( getString ( R . string . sign _ in _ failed _ l able ), ĠgetString ( R . string . on _ error _ l able )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAd Ġlistener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġad Listener : ĠAd Listener Ġ= Ġobject Ġ: ĠAd Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Loaded () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġan Ġad Ġis Ġloaded Ġsuccessfully . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed ( errorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġan Ġad Ġfails Ġto Ġbe Ġloaded . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Opened () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġan Ġad Ġis Ġopened . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġa Ġuser Ġt aps Ġan Ġad . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Leave () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġa Ġuser Ġhas Ġleft Ġthe Ġapp . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Closed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalled Ġwhen Ġan Ġad Ġis Ġclosed . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" TAG " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 2 2 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSIGN _ IN _ REQUEST _ CODE Ġ= Ġ 8 8 8 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUID _ LENGTH Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREF RESH _ TIME Ġ= Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRUN TIME _ PERMISSION S Ġ= ĠarrayOf ( permission . ACCESS _ CO AR SE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . ACCESS _ F INE _ LOCATION , Ġpermission . ACCESS _ BACKGROUND _ LOCATION , Ġpermission . ACCESS _ NETWORK _ STATE , Ġpermission . INTER NET ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠChecking Ġthe Ġall Ġnecess ory Ġpermissions . ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġhas Permissions ( context : ĠContext , Ġvar arg Ġpermissions : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ&& Ġpermissions Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( context , Ġpermission ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }