| /* |
| * Copyright (C) 2004-2012 Savoir-Faire Linux Inc. |
| * |
| * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 3 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| * |
| * Additional permission under GNU GPL version 3 section 7: |
| * |
| * If you modify this program, or any covered work, by linking or |
| * combining it with the OpenSSL project's OpenSSL library (or a |
| * modified version of that library), containing parts covered by the |
| * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc. |
| * grants you additional permission to convey the resulting work. |
| * Corresponding Source for a non-source form of such a combination |
| * shall include the source code for the parts of OpenSSL used as well |
| * as that of the covered work. |
| */ |
| package com.savoirfairelinux.sflphone.client; |
| |
| import android.content.ContentResolver; |
| import android.content.Context; |
| import android.database.Cursor; |
| import android.provider.ContactsContract; |
| import android.provider.ContactsContract.Contacts; |
| import android.util.Log; |
| import java.util.ArrayList; |
| |
| public class ContactManager |
| { |
| int mCount; |
| Context mContext; |
| ArrayList<CallContact> contactList; |
| |
| static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, |
| Contacts.PHOTO_ID, Contacts.LOOKUP_KEY }; |
| |
| public ContactManager(Context context) |
| { |
| mCount = 0; |
| mContext = context; |
| contactList = new ArrayList<CallContact>(); |
| |
| loadContactList(); |
| } |
| |
| public void loadContactList() |
| { |
| ContentResolver resolver = mContext.getContentResolver(); |
| |
| Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, null, null, null); |
| while(cursor.moveToNext()) { |
| mCount++; |
| String displayName = ""; |
| String phoneNumber = ""; |
| String emailAddress = ""; |
| |
| String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); |
| |
| displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); |
| |
| /* |
| Cursor structuredName = resolver.query(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, null, |
| ContactsContract.Contacts._ID +" = "+ contactId, null, null); |
| if(structureName.getCount() > 0) |
| Log.i("loadContactList", "Got a given name"); |
| */ |
| |
| /* |
| Cursor sipAddress = resolver.query(ContactsContract.Contacts.SIP_ADDRESS, null, |
| ContactsContract.Contacts._ID +" = "+ contactId, null, null); |
| if(sipAddress.getCount() > 0) |
| Log.i("loadContactList", "Got a sip address"); |
| */ |
| |
| String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); |
| if(hasPhone.compareTo("1") == 0) { |
| // You know it has a number so now query it like this |
| Cursor phones = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, |
| ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); |
| while(phones.moveToNext()) { |
| phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); |
| } |
| phones.close(); |
| } |
| |
| Cursor emails = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, |
| ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null); |
| while (emails.moveToNext()) { |
| // This would allow you get several email addresses |
| emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); |
| } |
| emails.close(); |
| |
| contactList.add(new CallContact(displayName, phoneNumber, emailAddress)); |
| |
| } |
| cursor.close(); |
| } |
| |
| public int getNbContacts() |
| { |
| return mCount; |
| } |
| |
| public CallContact getContact(int position) |
| { |
| return contactList.get(position); |
| } |
| |
| public ArrayList<CallContact> getContactList() |
| { |
| return contactList; |
| } |
| } |
| |