package Ġio . code digest . contacts . ui . main ĊĊ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Contacts Contract Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . fragment . nav Args Ċ Ċ import Ġio . code digest . contacts . R Ċ import Ġio . code digest . contacts . ui . main . model . Contact Ċ import Ġkotlinx . android . synt hetic . main . fragment _ contact _ result .* Ċ Ċ class ĠContact Result Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontent Resolver Ġby Ġlazy Ġ{ Ġrequire Context (). content Resolver Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ contact _ result , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ Ġbundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠContact Result Fragment Args . from Bundle ( bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Lookup Key Ġ= Ġargs . contact Lookup Key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Ġ= Ġsearch Contact By Lookup Key ( contact Lookup Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġit . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone . text Ġ= Ġit . phone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch Contact By Lookup Key ( lookup Key : ĠString ): ĠContact ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lookup Key . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlookup Uri Ġ= ĠUri . with App ended Path ( Contacts Contract . Contacts . CONTENT _ LOOK UP _ URI , Ġlookup Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠContact s Contract . Contacts . lookup Contact ( content Resolver , Ġlookup Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontent Resolver . query ( uri , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Contacts Contract . Contacts ._ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Contacts Contract . Contacts . DISPLAY _ NAME _ PRIMARY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Ġ= ĠContact ( id , Ġlookup Key , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas PhoneNumber Ġ= Ġ( cursor . getInt ( cursor . getColumnIndex ( Contacts Contract . Contacts . HAS _ PHONE _ NUMBER )) Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has PhoneNumber ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwhere Contact Id Is Ġ= Ġ"${ Contacts Contract . Common Data Kinds . Phone . CONTACT _ ID } Ġ= Ġ? " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphone Cursor Ġ= Ġcontent Resolver . query ( Contacts Contract . Common Data Kinds . Phone . CONTENT _ URI , Ġnull , Ġwhere Contact Id Is , ĠarrayOf ( id ), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( phone Cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( phone Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphone Ġ= Ġphone Cursor . getString ( phone Cursor . getColumnIndex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContact s Contract . Common Data Kinds . Phone . NUMBER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact . phone Ġ= Ġphone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphone Cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontact ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ