怎么在 Android 2.0 上读取联系人

本教程将介绍如何在 Android 2.0 上读取联系人的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在 Android 2.0 上读取联系人 教程 第1张

问题描述

I'm working on Android 2.0 and am trying to receive a list of all contacts.

Since is deprecated, I have to use , But I can't find a proper example of how to use it (ex: retrieve a list of all contacts on the phonebook).

Anyone knows where to find such an example?

解决方案

First, ensure that you have added

<uses-permission android:name="android.permission.READ_CONTACTS"/>

to your AndroidManifest.xml file, then you can loop through your phone contacts like this:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
while (cursor.moveToNext()) { 
String contactId = cursor.getString(cursor.getColumnIndex( 
ContactsContract.Contacts._ID)); 
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
if (Boolean.parseBoolean(hasPhone)) { 
// You know it has a number so now query it like this
Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
while (phones.moveToNext()) { 
String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));} 
phones.close(); 
}

Cursor emails = getContentResolver().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 
String emailAddress = emails.getString( 
emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
} 
emails.close();
}
cursor.close(); 

Additionally, you can loop through your contacts and simply get the name and phone number like this:

Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while(people.moveToNext()) {
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = people.getString(nameFieldColumnIndex);
int numberFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);
String number = people.getString(numberFieldColumnIndex);
}

people.close();

Furthermore, if you need to get things like notes from a contact then you will need to use a different URI, like the following (feel free to use this method):

private String getNote(long contactId) { 
String note = null; 
String[] columns = new String[] { ContactsContract.CommonDataKinds.Note.NOTE }; 
String where = ContactsContract.Data.RAW_CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
String[] whereParameters = new String[]{Long.toString(contactId), ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; 
Cursor contacts = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, where, whereParameters, null); 
if (contacts.moveToFirst()) { 
rv = contacts.getString(0); 
} 
contacts.close(); 
return note; 
} 

Notice this time I used not only the contact id but the mime type for the query.

好了关于怎么在 Android 2.0 上读取联系人的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。