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}