package Ġcom view aqu ah p . google . sites . yo ub im iku Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . github . b ass aer . chat message view . model . Message Ċ import Ġcom . google . android . gms . ads .* Ċ import Ġcom . google . android . gms . ads . ad manager . Ad Manager Ad Request Ċ import Ġcom . google . android . gms . ads . ad manager . Ad Manager Ad View Ċ import Ġcom . google . android . play . core . review . Review ManagerFactory Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġjava . lang . Exception Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener , ĠDialog Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Account : ĠUser ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm iku Account : ĠUser ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdetect Intent : ĠDetect Intent ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġad View : ĠAd Manager Ad View ĊĠĠĠ Ġprivate Ġvar Ġinitial Layout Complete Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġjob Ġ= ĠSuper visor Job () ĊĠĠĠ Ġprivate Ġval Ġexception Handler : ĠCor outine ExceptionHandler Ġ= ĊĠĠĠĠĠĠĠ ĠCor outine ExceptionHandler Ġ{ Ġvalue , Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġthrowable . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġscope Ġ= ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Default Ġ+ Ġjob Ġ+ Ġexception Handler ) Ġ// Ġexception Handler ãĤĴ æ¸ ¡ ãģĻ ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġdetect Intent Ġ= ĠDetect Intent ( this , Ġget Dialog Flow Session ()) ĊĊĠĠĠĠĠĠĠ Ġinit Chat View ( ad Size . getHeight In Pixels ( this )) ĊĠĠĠĠĠĠĠ Ġinit Banner () ĊĊĠĠĠĠĠĠĠ Ġshow UserName Dialog IfNeeded () ĊĠĠĠĠĠĠĠ Ġshow In App Review IfNeeded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġad Size : ĠAd Size ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġwindow Manager . default Display ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay . get Metrics ( out Metrics ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġout Metrics . density ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġad Width Pixels Ġ= Ġad _ view _ container . width . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ad Width Pixels Ġ== Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Width Pixels Ġ= Ġout Metrics . width Pixels . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġad Width Ġ= Ġ( ad Width Pixels Ġ/ Ġdensity ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAd Size . getCurrent Orientation An ch ored Adaptive Banner Ad Size ( this , Ġad Width ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Banner () Ġ{ ĊĠĠĠĠĠĠĠ ĠMobile Ads . initialize ( this ) Ġ{} ĊĠĠĠĠĠĠĠ ĠMobile Ads . setRequest Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Configuration . Builder (). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġad _ placeholder . layout Params . height Ġ= Ġad Size . getHeight In Pixels ( this ) ĊĠĠĠĠĠĠĠ Ġad View Ġ= ĠAd Manager Ad View ( this ) ĊĠĠĠĠĠĠĠ Ġad _ view _ container . addView ( ad View ) ĊĠĠĠĠĠĠĠ Ġad _ view _ container . view Tree Observer . add On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! initial Layout Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Layout Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Banner ( ad Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Banner ( ad Size : ĠAd Size ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" load Banner () ") ĊĠĠĠĠĠĠĠ Ġad View . ad Unit Id Ġ= ĠBuild Config . AD _ UNIT _ ID ĊĠĠĠĠĠĠĠ Ġad View . set Ad Sizes ( ad Size ) ĊĠĠĠĠĠĠĠ Ġval Ġad Request Ġ= ĠAd Manager Ad Request . Builder (). build () ĊĠĠĠĠĠĠĠ Ġad View . load Ad ( ad Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Chat View ( ad Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠFont Size Config . getSize ( get FontSize Type ( this )) ĊĠĠĠĠĠĠĠ Ġset FontSize ( size , Ġchat _ view ) ĊĊĠĠĠĠĠĠĠ Ġval Ġm iku Face Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . normal ) ĊĠĠĠĠĠĠĠ Ġuser Account Ġ= ĠUser ( 0 , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġm iku Account Ġ= ĠUser ( 1 , ĠgetString ( R . string . mik u _ name ), Ġm iku Face ) ĊĠĠĠĠĠĠĠ Ġval Ġm lp Ġ= Ġchat _ view . layout Params Ġas ĠViewGroup . Margin LayoutParams ĊĠĠĠĠĠĠĠ Ġm lp . top Margin Ġ= Ġad Height ĊĠĠĠĠĠĠĠ Ġchat _ view . setDate Separator FontSize ( 0 F ) ĊĠĠĠĠĠĠĠ Ġchat _ view . setInput Text Hint ( getString ( R . string . input _ text _ hint )) ĊĠĠĠĠĠĠĠ Ġchat _ view . setOn Click Send Button Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow G reet ( userName : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg reeting Ġ= Ġresources . getString ( R . string . mik u _ nice _ to _ meet _ you , ĠuserName ) ĊĠĠĠĠĠĠĠ Ġval Ġwelcome Ġ= ĠMessage . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setUser ( mik u Account ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Right ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( greeting ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġchat _ view . receive ( welcome ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow In App Review IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠShared Preference Manager ĊĠĠĠĠĠĠĠ Ġpref . get ( this , ĠKey . LA UNCH _ COUNT . name , Ġ 0 )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġit Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put ( this , ĠKey . LA UNCH _ COUNT . name , Ġcurrent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èµ· åĭķ åĽŀ æķ° ãģĮ 5 åĽŀ ãģ® ãģ¨ ãģį ãģ« In App Review ãĤĴ è¡¨ç¤º ãģĹ ãĤ«ãĤ¦ãĥ³ãĥĪ ãĤĴ ãĥª ãĤ»ãĥĥãĥĪ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Ġ>= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen In App Review () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put ( this , ĠKey . LA UNCH _ COUNT . name , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow UserName Dialog IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getUser Name ( this ). equals ("")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow UserName Dialog ( false ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account . setName ( getUser Name ( this ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow G reet ( getUser Name ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow UserName Dialog ( cancel able : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠUser Name Dialog Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġargs . put Boolean ( Constants . ARGUMENT _ CANCEL ABLE , Ġcancel able ) ĊĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠ Ġdialog . set Dialog Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . show ( fragment Manager , ĠUser Name Dialog Fragment :: class . java . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Positive Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Account . setName ( getUser Name ( this ). toString ()) ĊĠĠĠĠĠĠĠ Ġshow G reet ( getUser Name ( this )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow FontSize Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠFont Size Config . getType ( get FontSize Type ( this )). ordinal ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . setting _ font _ size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Single Choice Items ( R . array . font _ size _ config , Ġindex ) Ġ{ Ġ_, Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset FontSize ( FontSize Config . getSize ( which ), Ġchat _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Manager . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey . FONT _ SIZE . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFont Size Config . getType ( which ). name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . setting _ dialog _ accept ), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Language Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠLanguage Config . getType ( get Language ( this )). ordinal ĊĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . setting _ language )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Single Choice Items ( R . array . language _ config , Ġindex ) Ġ{ Ġ_, Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Manager . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey . LANGUAGE . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLanguage Config . getType ( which ). name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . setting _ dialog _ accept ), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Play Store () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse (" market :// details ? id =$ packageName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . setting _ submit _ review _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen In App Review () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreview Manager Ġ= ĠReview ManagerFactory . create ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreview Manager . request Review Flow (). add On Success Listener Ġ{ Ġreview Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview Manager . launch Review Flow ( this , Ġreview Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Mailer () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND TO ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . parse (" mailto :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ EMAIL , ĠarrayOf ( getString ( R . string . feedback _ email _ address ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ SUBJECT , ĠgetString ( R . string . feedback _ email _ subject )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" App ĠVersion : Ġ" Ġ+ Ġget Version Name ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ n Model ĠName : Ġ" Ġ+ ĠBuild . MODEL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ n OS ĠVersion : Ġ" Ġ+ ĠBuild . VERSION . SDK _ INT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ n ================ =\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( getString ( R . string . feedback _ email _ in quiry )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . setting _ send _ feedback _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Version Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info ( packageName , Ġ 0 ). version Name ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Share Intent () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( getString ( R . string . setting _ share _ app _ text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( getString ( R . string . setting _ share _ app _ url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Intent Ġ= ĠIntent . create Chooser ( intent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( share Intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . setting _ share _ app _ error ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ user _ name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow UserName Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ font _ size Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow FontSize Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ language Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Language Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ submit _ review Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Play Store () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ send _ feedback Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Mailer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . setting _ share _ app Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Share Intent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( chat _ view . input Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsend Ġ= ĠMessage . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setUser ( user Account ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Right ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( chat _ view . input Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hide Icon ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġsend Request ( chat _ view . input Text ) ĊĠĠĠĠĠĠĠ Ġchat _ view . send ( send ) ĊĠĠĠĠĠĠĠ Ġchat _ view . input Text Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Request ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġtext ) ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , ĠConstants . LOGGER _ EMPTY _ QUERY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Flow Task ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Dialog Flow Session (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġ" yo ub im iku " Ġ+ ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get Dialog Flow Session (): Ġ$ session ") ĊĠĠĠĠĠĠĠ Ġreturn Ġsession ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġdialog Flow Task ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġdetect Intent . send ( text ) ĊĠĠĠĠĠĠĠ Ġval Ġreceived Message Ġ= ĠMessage . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setUser ( mik u Account ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Right ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchat _ view . receive ( received Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġad View . pause () ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġad View . resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġad View . destroy () ĊĠĠĠĠĠĠĠ Ġdetect Intent . reset Contexts () ĊĠĠĠĠĠĠĠ Ġscope . coroutine Context . cancel () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠMainActivity :: class . java . name . toString () ĊĠĠĠ Ġ} Ċ } Ċ