/* Ċ Ġ* ĠVo IP . ms ĠSMS Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠMichael ĠK our las Ċ Ġ* Ċ Ġ* Ġ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 Ġnet . k our las . vo ip ms _ sms . sms . services Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . core . app . Job Intent Service Ċ import Ġnet . k our las . vo ip ms _ sms . R Ċ import Ġnet . k our las . vo ip ms _ sms . notifications . Notifications Ċ import Ġnet . k our las . vo ip ms _ sms . sms . Conversation Id Ċ import Ġnet . k our las . vo ip ms _ sms . sms . Database Ċ import Ġnet . k our las . vo ip ms _ sms . utils . JobId Ċ import Ġnet . k our las . vo ip ms _ sms . utils . log Exception Ċ Ċ /** Ċ Ġ* ĠService Ġused Ġto Ġmark Ġthe Ġconversation Ġdefined Ġby Ġthe Ġspecified Ġcontact Ċ Ġ* Ġusing Ġthe Ġspecified ĠD ID Ġas Ġread . Ċ Ġ*/ Ċ class ĠMark Read Service Ġ: ĠJob Intent Service () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Handle Work ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTermin ate Ġquiet ly Ġif Ġintent Ġdoes Ġnot Ġexist Ġor Ġdoes Ġnot Ġcontain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġmark Ġas Ġread Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ!= Ġapplication Context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . mark _ read _ action )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġthe ĠD ID Ġand Ġcontact Ġfrom Ġthe Ġintent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconversation Id Ġ= Ġget Intent Data ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMark Ġthe Ġconversation Ġas Ġread ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase . getInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context ). mark Conversation Read ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconversation Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel Ġexisting Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . getInstance ( application ). cancel Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconversation Id ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExtract s Ġthe ĠD ID Ġand Ġcontact Ġfrom Ġthe Ġspecified Ġintent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Intent Data ( intent : ĠIntent ): ĠCon versation Id Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠExtract Ġthe ĠD ID Ġand Ġcontact Ġfrom Ġthe Ġintent ĊĠĠĠĠĠĠĠ Ġval Ġdid Ġ= Ġintent . getString Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . mark _ read _ did )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠException (" DID Ġmissing ") ĊĠĠĠĠĠĠĠ Ġval Ġcontact Ġ= Ġintent . getString Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . mark _ read _ contact )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠException (" Contact Ġphone Ġnumber Ġmissing ") ĊĠĠĠĠĠĠĠ Ġreturn ĠCon versation Id ( did , Ġcontact ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġan Ġintent Ġwhich Ġcan Ġbe Ġused Ġto Ġmark Ġa Ġmessage Ġto Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġspecified Ġcontact Ġand Ġfrom Ġthe Ġspecified ĠD ID Ġas Ġread . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Intent ( context : ĠContext , Ġdid : ĠString , Ġcontact : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= Ġcontext . getString ( R . string . mark _ read _ action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( context . getString ( R . string . mark _ read _ did ), Ġdid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( context . getString ( R . string . mark _ read _ contact ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMark s Ġa Ġmessage Ġas Ġread . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart Service ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenqueue Work ( context , ĠMark Read Service :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJob Id . Mark Read Service . ordinal , Ġintent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ