package Ġcontacts . core . util Ċ Ċ import Ġcontacts . core . Contacts Ċ import Ġcontacts . core . entities . Data Entity Ċ import Ġcontacts . core . entities . Raw Contact Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġ[ Raw Contact ] Ġwith Ġthe Ġ[ Data Entity . raw Contact Id ]. Ċ Ġ* Ċ Ġ* ĠThis Ġmay Ġreturn Ġnull Ġif Ġthe Ġ[ Raw Contact ] Ġno Ġlonger Ġexists Ġor Ġif Ġ[ Data Entity . raw Contact Id ] Ġis Ġnull Ċ Ġ* Ġ( which Ġis Ġthe Ġcase Ġfor Ġmanually Ġconstructed Ġentities ). Ċ Ġ* Ċ Ġ* ĠSupports Ġprofile / non - profile ĠRaw Contacts Ġwith Ġnative / custom Ġdata . Ċ Ġ* Ċ Ġ* Ġ## ĠFor Ġexisting Ġ( inserted ) Ġentities Ġonly Ċ Ġ* Ċ Ġ* ĠThis Ġfunction Ġwill Ġonly Ġwork Ġfor Ġentities Ġthat Ġhave Ġalready Ġbeen Ġinserted Ġinto Ġthe ĠContact s Ċ Ġ* ĠProvider Ġdatabase . ĠThis Ġmeans Ġthat Ġthis Ġis Ġonly Ġfor Ġentities Ġthat Ġhave Ġbeen Ġretrieved Ġusing Ċ Ġ* Ġquery Ġor Ġresult ĠAPIs . Ċ Ġ* Ċ Ġ* Ġ## ĠPermissions Ċ Ġ* Ċ Ġ* ĠThe Ġ[ contacts . core . Contacts Permissions . READ _ PERMISSION ] Ġis Ġrequired . ĠOtherwise , Ġnull Ġwill Ġbe Ċ Ġ* Ġreturned Ġif Ġthe Ġpermission Ġis Ġnot Ġgranted . Ċ Ġ* Ċ Ġ* Ġ## ĠThread ĠS afety Ċ Ġ* Ċ Ġ* ĠThis Ġshould Ġbe Ġcalled Ġin Ġa Ġbackground Ġthread Ġto Ġavoid Ġblocking Ġthe ĠUI Ġthread . Ċ Ġ*/ Ċ // Ġ[ ANDROID ĠX ] Ġ@ Worker Thread Ġ( not Ġusing Ġannotation Ġto Ġavoid Ġdependency Ġon Ġandroidx . annotation ) Ċ @ Jvm Over loads Ċ fun ĠData Entity . raw Contact ( ĊĠĠĠ Ġcontacts : ĠContact s , ĊĠĠĠ Ġcancel : Ġ() Ġ-> ĠBoolean Ġ= Ġ{ Ġfalse Ġ} Ċ ): ĠRaw Contact ? Ġ= Ġraw Contact Id ?. let Ġ{ Ġraw Contact Id Ġ-> ĊĠĠĠ Ġcontacts . findFirst Raw Contact With Id ( raw Contact Id , Ġcancel ) Ċ }