/* Ċ Ġ* Ġ Ġ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 . love and share Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ScrollView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . hu awei . ag connect . config . AG Connect Services Config Ċ import Ġcom . hu awei . h ms . aa id . H ms InstanceId Ċ import Ġcom . hu awei . h ms . common . ApiException Ċ import Ġcom . hu awei . h ms . push . H ms Messaging Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Set Push : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Set AA ID : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Set Auto Init : ĠTextView ĊĠĠĠ Ġprivate Ġvar Ġreceiver : ĠMy Receiver ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress Lint (" Handler Leak ") ĊĠĠĠ Ġvar Ġhandler : ĠHandler ? Ġ= Ġobject Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGET _ AA ID Ġ-> Ġtv Set AA ID . setText ( R . string . get _ aa id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE _ AA ID Ġ-> Ġtv Set AA ID . setText ( R . string . delete _ aa id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġtv Set Push Ġ= ĠfindViewById ( R . id . btn _ set _ push ) ĊĠĠĠĠĠĠĠ Ġtv Set AA ID Ġ= ĠfindViewById ( R . id . btn _ get _ aa id ) ĊĠĠĠĠĠĠĠ Ġtv Set Auto Init Ġ= ĠfindViewById ( R . id . btn _ set _ auto Init _ enabled ) ĊĠĠĠĠĠĠĠ Ġtv Set Push . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġtv Set AA ID . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġtv Set Auto Init . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ add _ topic ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ get _ token ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ delete _ token ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ delete _ topic ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ action ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ generate _ intent ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . btn _ is _ auto Init _ enabled ). setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġreceiver Ġ= ĠMy Receiver () ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠ Ġfilter . addAction ( CODE LAB S _ ACTION ) ĊĠĠĠĠĠĠĠ Ġregister Receiver ( receiver , Ġfilter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ get _ aa id Ġ-> Ġset AA ID ( tv Set AA ID . text . toString () Ġ== ĠgetString ( R . string . get _ aa id )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ get _ token Ġ-> ĠgetToken () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ delete _ token Ġ-> Ġdelete Token () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ set _ push Ġ-> Ġset Receive Notify Msg ( tv Set Push . text . toString () Ġ== ĠgetString ( R . string . set _ push _ enable )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ add _ topic Ġ-> Ġadd Topic () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ delete _ topic Ġ-> Ġdelete Topic () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ action Ġ-> Ġopen Activity By Action () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ generate _ intent Ġ-> Ġgenerate Intent Uri () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ is _ auto Init _ enabled Ġ-> Ġis Auto Init Enabled () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ set _ auto Init _ enabled Ġ-> Ġset Auto Init Enabled ( tv Set Auto Init . text . toString () Ġ== ĠgetString ( R . string . Auto Init Enabled )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget AA ID (), ĠThis Ġmethod Ġis Ġused Ġto Ġobtain Ġan ĠAA ID Ġin Ġasynchronous Ġmode . ĠYou Ġneed Ġto Ġadd Ġa Ġlistener Ġto Ġlisten Ġto Ġthe Ġoperation Ġresult . ĊĠĠĠĠ Ġ* Ġdelete AA ID (), Ġdelete Ġa Ġlocal ĠAA ID Ġand Ġits Ġgeneration Ġtimestamp . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Get Ġget AA ID Ġor Ġdelete AA ID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset AA ID ( is Get : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Get ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Result Ġ= ĠH ms InstanceId . getInstance ( this ). aa id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Result . add On Success Listener Ġ{ Ġa aid Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaa Id Ġ= Ġa aid Result . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" get AA ID Ġsuccess :$ aa Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" get AA ID Ġsuccess :$ aa Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. send Empty Message ( DELETE _ AA ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" get AA ID Ġfailed :$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" get AA ID Ġfailed .$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠThread () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ms InstanceId . getInstance ( this @ MainActivity ). delete AA ID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" delete Ġa aid Ġand Ġits Ġgeneration Ġtimestamp Ġsuccess .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. send Empty Message ( GET _ AA ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" delete AA ID Ġfailed . Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" delete AA ID Ġfailed .$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠgetToken ( String ĠappId , ĠString Ġscope ), ĠThis Ġmethod Ġis Ġused Ġto Ġobtain Ġa Ġtoken Ġrequired Ġfor Ġaccessing ĠH UA WE I ĠPush ĠKit . ĊĠĠĠĠ Ġ* ĠIf Ġthere Ġis Ġno Ġlocal ĠAA ID , Ġthis Ġmethod Ġwill Ġautomatically Ġgenerate Ġan ĠAA ID Ġwhen Ġit Ġis Ġcalled Ġbecause Ġthe ĠHu awei ĠPush Ġserver Ġneeds Ġto Ġgenerate Ġa Ġtoken Ġbased Ġon Ġthe ĠAA ID . ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġa Ġsynchronous Ġmethod , Ġand Ġyou Ġcannot Ġcall Ġit Ġin Ġthe Ġmain Ġthread . ĠOtherwise , Ġthe Ġmain Ġthread Ġmay Ġbe Ġblocked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠgetToken () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Log (" getToken : begin ") ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠThread () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġread Ġfrom Ġag connect - services . json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠappId Ġ= ĠAG Connect Services Config . from Context ( this @ MainActivity ). getString (" client / app _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠH ms InstanceId . getInstance ( this @ MainActivity ). getToken ( appId , Ġ" H CM ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" get Ġtoken :$ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Reg Token ToServer ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" get Ġtoken :$ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" get Ġtoken Ġfailed , Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" get Ġtoken Ġfailed , Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġvoid Ġdelete Token ( String ĠappId , ĠString Ġscope ) Ġthrows ĠApiException ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġused Ġto Ġobtain Ġa Ġtoken . ĠAfter Ġa Ġtoken Ġis Ġdeleted , Ġthe Ġcorresponding ĠAA ID Ġwill Ġnot Ġbe Ġdeleted . ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġa Ġsynchronous Ġmethod . ĠDo Ġnot Ġcall Ġit Ġin Ġthe Ġmain Ġthread . ĠOtherwise , Ġthe Ġmain Ġthread Ġmay Ġbe Ġblocked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdelete Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Log (" delete Token : begin ") ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠThread () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġread Ġfrom Ġag connect - services . json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠappId Ġ= ĠAG Connect Services Config . from Context ( this @ MainActivity ). getString (" client / app _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ms InstanceId . getInstance ( this @ MainActivity ). delete Token ( appId , Ġ" H CM ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" delete Token Ġsuccess .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" delete Token Ġsuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" delete Token Ġfailed .$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" delete Token Ġfailed .$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġup Ġenable Ġor Ġdisable Ġthe Ġdisplay Ġof Ġnotification Ġmessages . ĊĠĠĠĠ Ġ* Ġ@ param Ġenable Ġenabled Ġor Ġnot ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Receive Notify Msg ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Log (" Control Ġthe Ġdisplay Ġof Ġnotification Ġmessages : begin ") ĊĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this ). turn On Push (). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" turn On Push ĠComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Set Push . setText ( R . string . set _ push _ unable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" turn On Push Ġfailed : Ġcause =" Ġ+ Ġtask . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this ). turn Off Push (). add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" turn Off Push ĠComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Set Push . setText ( R . string . set _ push _ enable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" turn Off Push Ġ Ġfailed : Ġcause Ġ=" Ġ+ Ġtask . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġto Ġsubscribe Ġto Ġtopics Ġin Ġasynchronous Ġmode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Topic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtopic Dialog Ġ= ĠTopic Dialog ( this , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtopic Dialog . setOn Dialog ClickListener ( object Ġ: ĠOn Dialog ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Confirm Click ( msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" subscribe ĠComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" subscribe ĠComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" subscribe Ġfailed : Ġret =" Ġ+ Ġtask . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" subscribe Ġfailed : Ġexception =" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtopic Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġto Ġunsubscribe Ġto Ġtopics Ġin Ġasynchronous Ġmode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdelete Topic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtopic Dialog Ġ= ĠTopic Dialog ( this , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtopic Dialog . setOn Dialog ClickListener ( object Ġ: ĠOn Dialog ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Confirm Click ( msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. unsubscribe ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" unsubscribe ĠComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" unsubscribe Ġfailed : Ġret =" Ġ+ Ġtask . exception . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" unsubscribe Ġfailed : Ġexception =" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtopic Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMy Receiver ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠMy Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġintent ?. extras ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bundle ?. getString (" msg ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbundle . getString (" msg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Log ( log : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv View Ġ= ĠfindViewById < View ? >( R . id . tv _ log ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsv View Ġ= ĠfindViewById < View ? >( R . id . sv _ log ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tv View Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv View . text Ġ= Ġlog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sv View Ġis ĠScroll View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv View . full Scroll ( View . FOCUS _ DOWN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Reg Token ToServer ( token : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" sending Ġtoken Ġto Ġserver . Ġtoken :$ token ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn ĠOpen ing Ġa ĠSpec ified ĠPage Ġof Ġan ĠApp , Ġhow Ġto ĠGenerate ĠIntent Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Intent Uri () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġadd Ġparameters Ġin Ġeither Ġof Ġthe Ġfollowing Ġways : ĊĠĠĠĠĠĠĠ Ġ// ĠDefine Ġa Ġscheme Ġprotocol , Ġfor Ġexample , Ġpush scheme :// com . hu awei . code lab push / dee plink ?. ĊĠĠĠĠĠĠĠ Ġ// Ġway Ġ 1 Ġstart : ĠUse Ġamp ers ands Ġ(& ) Ġto Ġseparate Ġkey - value Ġpairs . ĠThe Ġfollowing Ġis Ġan Ġexample : ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" push scheme :// com . hu awei . code lab push / dee plink ? name = abc & age = 1 8 0 ") ĊĠĠĠĠĠĠĠ Ġ// Ġway Ġ 1 Ġend . ĠIn Ġthis Ġexample , Ġname = abc Ġand Ġage = 1 8 0 Ġare Ġtwo Ġkey - value Ġpairs Ġseparated Ġby Ġan Ġamp ers and Ġ(& ). ĊĊĠĠĠĠĠĠĠ Ġ// Ġway Ġ 2 Ġstart : ĠDirect ly Ġadd Ġparameters Ġto Ġthe ĠIntent . ĊĠĠĠĠĠĠĠ Ġ// Ġintent . setData ( Uri . parse (" push scheme :// com . hu awei . code lab push / dee plink ? ")); ĊĠĠĠĠĠĠĠ Ġ// Ġintent . putExtra (" name ", Ġ" abc "); ĊĠĠĠĠĠĠĠ Ġ// Ġintent . putExtra (" age ", Ġ 1 8 0 ); ĊĠĠĠĠĠĠĠ Ġ// Ġway Ġ 2 Ġend . ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġfollowing Ġflag Ġis Ġmandatory . ĠIf Ġit Ġis Ġnot Ġadded , Ġduplicate Ġmessages Ġmay Ġbe Ġdisplayed . ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Uri Ġ= Ġintent . to Uri ( Intent . URI _ INT ENT _ SCHEME ) ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġvalue Ġof Ġintent Uri Ġwill Ġbe Ġassigned Ġto Ġthe Ġintent Ġparameter Ġin Ġthe Ġmessage Ġto Ġbe Ġsent . ĊĠĠĠĠĠĠĠ ĠLog . d (" intent Uri ", Ġintent Uri ) ĊĠĠĠĠĠĠĠ Ġshow Log ( intent Uri ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġstart Ġthe Ġdeep Ġlink Ġactivity Ġwith Ġthe Ġfollowing Ġcode . ĊĠĠĠĠĠĠĠ Ġ// intent . set Class ( this , ĠDee plink Activity . class ); ĊĠĠĠĠĠĠĠ Ġ// startActivity ( intent ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSim ulate Ġpulling Ġup Ġthe Ġapplication Ġcustom Ġpage Ġby Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġopen Activity By Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (" com . hu awei . code lab push . intent . action . test ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġstart Ġthe Ġdeep Ġlink Ġactivity Ġwith Ġthe Ġfollowing Ġcode . ĊĠĠĠĠĠĠĠ Ġintent . set Class ( this , ĠDee plink 2 Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Auto Init Enabled () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" is Auto Init Enabled :" Ġ+ ĠH ms Messaging . getInstance ( this ). is Auto Init Enabled ) ĊĠĠĠĠĠĠĠ Ġshow Log (" is Auto Init Enabled :" Ġ+ ĠH ms Messaging . getInstance ( this ). is Auto Init Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Auto Init Enabled ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this ). is Auto Init Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" setAuto Init Enabled : Ġtrue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" setAuto Init Enabled : Ġtrue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Set Auto Init . setText ( R . string . Auto Init Disabled ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ms Messaging . getInstance ( this ). is Auto Init Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" setAuto Init Enabled : Ġfalse ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Log (" setAuto Init Enabled : Ġfalse ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Set Auto Init . setText ( R . string . Auto Init Enabled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG : ĠString Ġ= Ġ" Push Demo Log " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ AA ID Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDELETE _ AA ID Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCODE LAB S _ ACTION : ĠString Ġ= Ġ" com . hu awei . code lab push . action " ĊĠĠĠ Ġ} Ċ }