package Ġcom . tab jin . da hh . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Contacts Contract Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġcom . tab jin . da hh . bean . Contact ĊĊĊ Ċ open Ġclass ĠGroup Contact Model Ġ: I Contact Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Contact ( context : ĠContext , data : String ): ĠArrayList < Contact > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ: ĠArrayList < Contact > Ġ= ĠArrayList < Contact >() ĊĠĠĠĠĠĠĠ Ġval Ġgroups : List < Contact > Ġ= ĠgetAll Group Info ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġgroups . iterator () ĊĠĠĠĠĠĠĠ Ġwhile ( iterator . hasNext ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontact Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( TextUtils . equals ( contact . contact Name , data )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( getAll Contact sBy GroupId ( context , contact . contact GroupId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Group Info ( context : ĠContext ): ĠList < Contact > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgroup List Ġ= ĠArrayList < Contact >() ĊĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġcontext . getContent Resolver (). query ( Contacts Contract . Groups . CONTENT _ URI , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor !!. moveTo Next ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġge : ĠContact ? Ġ= ĠContact () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠgroupId Ġ= Ġcursor !!. getInt ( cursor !!. getColumnIndex ( Contacts Contract . Groups ._ ID )) Ġ// Ġ ç»Ħ id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠgroupName Ġ= Ġcursor !!. getString ( cursor !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getColumnIndex ( Contacts Contract . Groups . TITLE )) Ġ// Ġ ç»Ħ åĲį ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġge !!. contact GroupId Ġ= ĠgroupId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġge !!. contact GroupName Ġ= ĠgroupName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" MainActivity ", Ġ" group Ġid :" Ġ+ ĠgroupId Ġ+ Ġ" >> groupName :" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠgroupName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup List . add ( ge ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgroup List ĊĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠgetAll Contact sBy GroupId ( context : Context , groupId : ĠInt ): ĠList < Contact > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠRAW _ PRO JECTION Ġ= ĠarrayOf ( Contacts Contract . Data . RAW _ CONTACT _ ID ) ĊĊĠĠĠĠĠĠĠ Ġval ĠRAW _ CONTACT S _ WHERE Ġ= Ġ( Contacts Contract . Common Data Kinds . Group Membership . GROUP _ ROW _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"= ?" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġand Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠContact s Contract . Data . MIME TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"=" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"'" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠContact s Contract . Common Data Kinds . Group Membership . CONTENT _ ITEM _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"' ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠéĢļè¿ĩ åĪĨ ç»Ħ çļĦ id ĠæŁ¥è¯¢ å¾ĹåĪ° RAW _ CONTACT _ ID ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontext . getContent Resolver (). query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContact s Contract . Data . CONTENT _ URI , ĠRAW _ PRO JECTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRAW _ CONTACT S _ WHERE , ĠarrayOf ( groupId . toString () Ġ+ Ġ""), Ġ" data 1 Ġasc ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcontact List Ġ= ĠArrayList < Contact >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRAW _ CONTACT _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġcursor . getColumnIndex (" raw _ contact _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw _ contact _ id Ġ= Ġcursor . getInt ( col ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . i (" getAll Contact sBy GroupId ", Ġ" raw _ contact _ id :" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġraw _ contact _ id ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġce : ĠContact ? Ġ= ĠContact () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġce !!. contact Id Ġ= Ġraw _ contact _ id ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Uri Ġ= ĠUri . parse (" content :// com . android . contacts / data ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Cursor Ġ= Ġcontext . getContent Resolver (). query ( data Uri , Ġnull , Ġ" raw _ contact _ id = ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf < String >(" "+ raw _ contact _ id ), Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( data Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata 1 Ġ= Ġdata Cursor . getString ( data Cursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getColumnIndex (" data 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime Ġ= Ġdata Cursor . getString ( data Cursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getColumnIndex (" mime type ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" vnd . android . cursor . item / phone _ v 2 " Ġ== Ġmime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġce !!. contact Phone Ġ= Ġ( data 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(" vnd . android . cursor . item / name " Ġ== Ġmime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġce !!. contact Name Ġ= Ġ( data 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontact List . add ( ce ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontact List ĊĠĠĠ Ġ} Ċ Ċ }