PhoneHelper.java

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