package Ġcom . th ose devs . authentication chall enger Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . app . Dialog Fragment Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġcom . esri . arc gis runtime . layers . Arc GIS Map Image Layer Ċ import Ġcom . esri . arc gis runtime . mapping . Arc GIS Map Ċ import Ġcom . esri . arc gis runtime . mapping . Base map Ċ import Ġcom . esri . arc gis runtime . security .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util . concurrent . Count DownLatch ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// Un comment Ġto Ġsee Ġdefault Ġbehavior . Ġ ĠIf Ġuncomment ed Ġcomment Ġout Ġline Ġbelow Ġto Ġstart Ġdefault Ġbehavior ĊĠĠĠĠĠĠĠ Ġ// setUp Default Challenge Handler () ĊĊĠĠĠĠĠĠĠ Ġ// Comment Ġthis Ġout Ġto Ġsee Ġdefault Ġbehavior Ġand Ġuncomment Ġthe Ġline Ġabove Ġthis Ġone . ĊĠĠĠĠĠĠĠ ĠAuthentication Manager . set Authentication Challenge Handler ( Custom Authentication Challenge Handler ( this )) ĊĊĠĠĠĠĠĠĠ Ġmap . map Ġ= ĠArc GIS Map ( Base map . create Dark Gray Canvas Vector ()) ĊĠĠĠĠĠĠĠ Ġval Ġsecure Layer Ġ= ĠArc GIS Map Image Layer (" https :// sample server 6 . arc g ison line . com / arc gis / rest / services / W ild fire _ secure / Map Server ") ĊĠĠĠĠĠĠĠ Ġmap . map . operation al Layers . add ( secure Layer ) ĊĊĠĠĠĠĠĠĠ Ġsecure Layer . add Done Loading Listener ({ Log . e (" NO HE ", Ġ" DONE ") }) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCustom Authentication Challenge Handler ( val Ġcontext : ĠActivity ?) Ġ: ĠDefault Authentication Challenge Handler ( context ), ĊĠĠĠ ĠLogin Dialog . Login Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Click ( dialog : ĠDialog Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLogin Dialog Ġ-> Ġcount DownLatch . count Down () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount DownLatch Ġ= ĠCount DownLatch ( 0 ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Challenge ( challenge : ĠAuthentication Challenge ?): ĠAuthentication Challenge Response Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( challenge ?. type Ġ== ĠAuthentication Challenge . Type . USER _ CRED ENTIAL _ CH ALL EN GE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount DownLatch Ġ= ĠCount DownLatch ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Dialog Ġ= ĠLogin Dialog ( context , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Dialog . show ( context ?. fragment Manager , Ġ" Ch all enger ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount DownLatch . await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Dialog . auth Challenge Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . handle Challenge ( challenge ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Valid Fragment ") ĊĠĠĠ Ġclass ĠLogin Dialog ( val Ġcontext : ĠActivity ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchallenge Handler : ĠLogin Dialog . Login Dialog Listener ) Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Listener : ĠLogin Dialog Listener Ġ= Ġchallenge Handler ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġauth Challenge Response : ĠAuthentication Challenge Response ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . layout Inflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġinflater . inflate ( R . layout . login _ dialog _ layout , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword : ĠEditText Ġ= Ġdialog View . findViewById ( R . id . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername : ĠEditText Ġ= Ġdialog View . findViewById ( R . id . username ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setView ( dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" Sign Ġin ", Ġ{ Ġ_ dialog Interface , Ġ_ id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! username . text . isNull Or Blank () Ġ&& Ġ! password . text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Challenge Response Ġ= ĠAuthentication Challenge Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication Challenge Response . Action . CONTINUE _ WITH _ CRED ENTIAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Credential ( username . text . toString (), Ġpassword . text . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener . on Dialog Click ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Username Ġ/ ĠPassword Ġblank ", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Cancel ", Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdl , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Challenge Response Ġ= ĠAuthentication Challenge Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication Challenge Response . Action . CANCEL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dialog . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener . on Dialog Click ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinterface ĠLogin Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Dialog Click ( dialog : ĠDialog Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ fun ĠActivity . setUp Default Challenge Handler () Ġ{ ĊĠĠĠ Ġval Ġdefault Authentication Challenge Handler Ġ= ĠDefault Authentication Challenge Handler ( this ) ĊĠĠĠ ĠAuthentication Manager . set Authentication Challenge Handler ( default Authentication Challenge Handler ) Ċ } Ċ