1package de.gultsch.chat.utils;
2
3import java.util.ArrayList;
4import java.util.Hashtable;
5
6import android.content.Context;
7import android.content.CursorLoader;
8import android.content.Loader;
9import android.content.Loader.OnLoadCompleteListener;
10import android.database.Cursor;
11import android.os.Bundle;
12import android.provider.ContactsContract;
13
14public class PhoneHelper {
15
16 public static void loadPhoneContacts(Context context, final OnPhoneContactsLoadedListener listener) {
17 final Hashtable<String, Bundle> phoneContacts = new Hashtable<String, Bundle>();
18
19 final String[] PROJECTION = new String[] {
20 ContactsContract.Data._ID,
21 ContactsContract.Data.DISPLAY_NAME,
22 ContactsContract.Data.PHOTO_THUMBNAIL_URI,
23 ContactsContract.Data.LOOKUP_KEY,
24 ContactsContract.CommonDataKinds.Im.DATA };
25
26 final String SELECTION = "(" + ContactsContract.Data.MIMETYPE + "=\""
27 + ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE
28 + "\") AND (" + ContactsContract.CommonDataKinds.Im.PROTOCOL
29 + "=\"" + ContactsContract.CommonDataKinds.Im.PROTOCOL_JABBER
30 + "\")";
31
32 CursorLoader mCursorLoader = new CursorLoader(context,
33 ContactsContract.Data.CONTENT_URI, PROJECTION, SELECTION, null,
34 null);
35 mCursorLoader.registerListener(0, new OnLoadCompleteListener<Cursor>() {
36
37 @Override
38 public void onLoadComplete(Loader<Cursor> arg0, Cursor cursor) {
39 while (cursor.moveToNext()) {
40 Bundle contact = new Bundle();
41 contact.putInt("phoneid", cursor.getInt(cursor
42 .getColumnIndex(ContactsContract.Data._ID)));
43 contact.putString(
44 "displayname",
45 cursor.getString(cursor
46 .getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
47 contact.putString(
48 "photouri",
49 cursor.getString(cursor
50 .getColumnIndex(ContactsContract.Data.PHOTO_THUMBNAIL_URI)));
51 contact.putString("lookup",cursor.getString(cursor
52 .getColumnIndex(ContactsContract.Data.LOOKUP_KEY)));
53 phoneContacts.put(
54 cursor.getString(cursor
55 .getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)),
56 contact);
57 }
58 if (listener!=null) {
59 listener.onPhoneContactsLoaded(phoneContacts);
60 }
61 }
62 });
63 mCursorLoader.startLoading();
64 }
65}