package Ġcom . example . me hen čĊč Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . text . TextUtils č Ċ import Ġandroid . widget . Button č Ċ import Ġandroid . widget . EditText č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroid . widget . Toast č Ċ import Ġandroidx . appcompat . app . AppCompatActivity č Ċ import Ġcom . firebase . ui . auth . Auth UI č Ċ import Ġcom . firebase . ui . auth . Auth UI . Id p Config č Ċ import Ġcom . firebase . ui . auth . Auth UI . Id p Config . Email Builder č Ċ import Ġcom . firebase . ui . auth . Firebase Auth UI Activity Result Contract č Ċ import Ġcom . firebase . ui . auth . data . model . Firebase Auth UI Authentication Result č Ċ import Ġcom . firebase . ui . auth . util . Extra Constants č Ċ import Ġcom . google . firebase . auth . Action Code Settings č Ċ import Ġcom . google . firebase . auth . Firebase Auth č Ċ import Ġcom . google . firebase . auth . Firebase User č Ċ import Ġcom . google . firebase . auth . k tx . auth č Ċ import Ġcom . google . firebase . k tx . Firebase čĊč Ċ // import Ġcom . google . firebase . quickstart . auth . R čĊč Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity Ġ() Ġ{ čĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġset Theme ( R . style . Theme _ Me hen ) čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġactivity Login Edit Mail EditText Ġ= ĠfindViewById < EditText >( R . id . activity _ login _ edit _ mail ) čĊĠĠĠĠĠĠĠ Ġval Ġactivity Login Edit Password EditText Ġ= ĠfindViewById < EditText >( R . id . activity _ login _ edit _ pass ) čĊĠĠĠĠĠĠĠ Ġval Ġactivity Login SignIn Button Ġ= ĠfindViewById < Button >( R . id . activity _ login _ sign _ in ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġactivity Login Register Link Ġ= ĠfindViewById < TextView >( R . id . activity _ login _ register _ link ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġauth : ĠFirebase Auth Ġ= ĠFirebase . auth čĊčĊĠĠĠĠĠĠĠ Ġactivity Login SignIn Button . setOnClickListener { čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Auth UI . getInstance (). sign Out ( this ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmail ToText Ġ= Ġactivity Login Edit Mail EditText . text . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword ToText Ġ= Ġactivity Login Edit Password EditText . text . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( mail ToText ) Ġ|| ĠText Utils . isEmpty ( password ToText )){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġenter Ġyour Ġdetails ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth . signIn With Email And Password ( mail ToText , Ġpassword ToText ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfire Base User : ĠString ? Ġ= Ġtask . result !!. user !!. displayName čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" User Ġ'$ fire Base User ' Ġlogged Ġin Ġsuccessfully !", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Me hen Singleton . activity Main Intent ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . exception !!. message . toString (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġactivity Login Register Link . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Me hen Singleton . activity Register Intent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊčĊč Ċ /* class ĠLogin Activity Ġ: ĠAppCompatActivity Ġ() Ġ{ čĊĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ create _ launcher ] čĊĠĠĠ Ġ// ĠSee : Ġhttps :// developer . android . com / training / basics / int ents / result čĊĠĠĠ Ġprivate Ġval Ġsign In Launcher Ġ= Ġregister For Activity Result ( čĊĠĠĠĠĠĠĠ ĠFirebase Auth UI Activity Result Contract () čĊĠĠĠ Ġ) Ġ{ Ġres Ġ-> čĊĠĠĠĠĠĠĠ Ġthis . on SignIn Result ( res ) čĊĠĠĠ Ġ} čĊĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ create _ launcher ] čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġset Theme ( R . style . Theme _ Me hen ) čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . network _ game _ layout . xml . activity _ login ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġcreate SignIn Intent () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ create _ intent ] čĊĠĠĠĠĠĠĠ Ġ// ĠChoose Ġauthentication Ġproviders čĊĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= Ġarray ListOf ( čĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Email Builder (). build (), č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Phone Builder (). build (), č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Google Builder (). build (), č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Facebook Builder (). build (), č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Twitter Builder (). build (), čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġand Ġlaunch Ġsign - in Ġintent čĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġsign In Launcher . launch ( signIn Intent ) čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ create _ intent ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ result ] čĊĠĠĠ Ġprivate Ġfun Ġon SignIn Result ( result : ĠFirebase Auth UI Authentication Result ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresult . idp Response čĊĠĠĠĠĠĠĠ Ġif Ġ( result . result Code Ġ== ĠRESULT _ OK ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSuccessfully Ġsigned Ġin čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠFirebase Auth . getInstance (). currentUser čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġfailed . ĠIf Ġresponse Ġis Ġnull Ġthe Ġuser Ġcanceled Ġthe čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsign - in Ġflow Ġusing Ġthe Ġback Ġbutton . ĠOtherwise Ġcheck čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġresponse . getError (). get ErrorCode () Ġand Ġhandle Ġthe Ġerror . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ result ] čĊčĊĠĠĠ Ġprivate Ġfun Ġsign Out () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ sign out ] čĊĠĠĠĠĠĠĠ ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sign Out ( this ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ sign out ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġdelete () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ delete ] čĊĠĠĠĠĠĠĠ ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete ( this ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ delete ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġtheme And Logo () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= Ġempty List < Auth UI . Id p Config >() čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ theme _ logo ] čĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . set Logo ( R . drawable . logo ) Ġ// ĠSet Ġlogo Ġdrawable čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . set Theme ( R . style . My Super App Theme ) Ġ// ĠSet Ġtheme čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġsign In Launcher . launch ( signIn Intent ) čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ theme _ logo ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġprivacy And Terms () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= Ġempty List < Auth UI . Id p Config >() čĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ pp _ tos ] čĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set T os And Privacy Policy Urls ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// example . com / terms . html ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// example . com / privacy . html ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġsign In Launcher . launch ( signIn Intent ) čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ pp _ tos ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġopen Ġfun Ġemail Link () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ email _ link ] čĊĠĠĠĠĠĠĠ Ġval Ġaction Code Settings Ġ= ĠAction Code Settings . newBuilder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Android PackageName ( Ġ/* Ġyour PackageName = Ġ*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"... ", Ġ Ġ/* Ġinstall IfNot Available = Ġ*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , Ġ Ġ/* Ġminimum Version = Ġ*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Handle Code In App ( true ) Ġ// ĠThis Ġmust Ġbe Ġset Ġto Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Url (" https :// google . com ") Ġ// ĠThis ĠURL Ġneeds Ġto Ġbe Ġwh itelisted čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊčĊĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= ĠlistOf ( čĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmail Builder () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Email Link SignIn () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction Code Settings ( action Code Settings ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠ Ġsign In Launcher . launch ( signIn Intent ) čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ email _ link ] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġopen Ġfun Ġcatch Email Link () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġproviders : ĠList < Id p Config > Ġ= Ġempty List () čĊčĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġauth _ f ui _ email _ link _ catch ] čĊĠĠĠĠĠĠĠ Ġif Ġ( Auth UI . can Handle Intent ( intent )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= Ġintent . extras Ġ?: Ġreturn čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġextras . getString ( Extra Constants . EMAIL _ LINK _ SIGN _ IN ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( link Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth UI . getInstance () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Email Link ( link ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign In Launcher . launch ( signIn Intent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġauth _ f ui _ email _ link _ catch ] čĊĠĠĠ Ġ} č Ċ }*/