/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 , ĠM os he ĠW ais berg Ċ Ġ* Ċ Ġ* Ġ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 . github . duplicates . message Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Base Columns ._ ID Ċ import Ġandroid . provider . Tele phony Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . ADDRESS Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . BODY Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . DATE Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . DATE _ SENT Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . ERROR _ CODE Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . LOCK ED Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . PERSON Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . PROTOCOL Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . READ Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . SE EN Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . STATUS Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . SUBJECT Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . THREAD _ ID Ċ import Ġandroid . provider . Tele phony . Text Based Sms Columns . TYPE Ċ import Ġcom . github . duplicates . Duplicate Provider Ċ Ċ /** Ċ Ġ* ĠProvide Ġduplicate Ġmessages . Ċ Ġ* Ċ Ġ* Ġ@ author Ġm os he . w Ċ Ġ*/ Ċ class ĠMessage Provider ( context : ĠContext ) Ġ: ĠDuplicate Provider < Message Item >( context ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent Uri (): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTele phony . Sms . CONTENT _ URI ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Cursor Projection (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPRO JECTION ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Item ( cursor : ĠCursor ): ĠMessage Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage Item () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopulate Item ( cursor : ĠCursor , Ġitem : ĠMessage Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem . id Ġ= Ġcursor . getLong ( INDEX _ ID ) ĊĠĠĠĠĠĠĠ Ġitem . address Ġ= Ġempty ( cursor , ĠINDEX _ ADDRESS ) ĊĠĠĠĠĠĠĠ Ġitem . body Ġ= Ġempty ( cursor , ĠINDEX _ BODY ) ĊĠĠĠĠĠĠĠ Ġitem . date Received Ġ= Ġcursor . getLong ( INDEX _ DATE _ RECE IVED ) ĊĠĠĠĠĠĠĠ Ġitem . date Sent Ġ= Ġcursor . getLong ( INDEX _ DATE _ SENT ) ĊĠĠĠĠĠĠĠ Ġitem . errorCode Ġ= Ġcursor . getInt ( INDEX _ ERROR _ CODE ) ĊĠĠĠĠĠĠĠ Ġitem . is Locked Ġ= Ġcursor . getInt ( INDEX _ LOCK ED ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitem . person Ġ= Ġcursor . getInt ( INDEX _ PERSON ) ĊĠĠĠĠĠĠĠ Ġitem . protocol Ġ= Ġcursor . getInt ( INDEX _ PROTOCOL ) ĊĠĠĠĠĠĠĠ Ġitem . is Read Ġ= Ġcursor . getInt ( INDEX _ READ ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitem . is Seen Ġ= Ġcursor . getInt ( INDEX _ SE EN ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġitem . status Ġ= Ġcursor . getInt ( INDEX _ STATUS ) ĊĠĠĠĠĠĠĠ Ġitem . subject Ġ= Ġempty ( cursor , ĠINDEX _ SUBJECT ) ĊĠĠĠĠĠĠĠ Ġitem . thread Id Ġ= Ġcursor . getLong ( INDEX _ THREAD _ ID ) ĊĠĠĠĠĠĠĠ Ġitem . type Ġ= Ġcursor . getInt ( INDEX _ TYPE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Read Permissions (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPER MISSION S _ READ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Delete Permissions (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPER MISSION S _ WRITE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER MISSION S _ READ Ġ= ĠarrayOf ( Manifest . permission . READ _ SMS ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER MISSION S _ WRITE Ġ= ĠarrayOf (" android . permission . WRITE _ SMS ") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPRO JECTION Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠADDRESS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB ODY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATE _ SENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOCK ED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPER SON , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPROTO COL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREAD , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSE EN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTATUS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUB JECT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTHREAD _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ ID Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ ADDRESS Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ BODY Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ DATE _ RECE IVED Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ DATE _ SENT Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ ERROR _ CODE Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ LOCK ED Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ PERSON Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ PROTOCOL Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ READ Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ SE EN Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ STATUS Ġ= Ġ 1 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ SUBJECT Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ THREAD _ ID Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ TYPE Ġ= Ġ 1 4 ĊĠĠĠ Ġ} Ċ } Ċ