由於項目的需求涉及到這放面的,在網上差了一些資料,自己做的DEMO例子如下:package com.zte.read;
package com.zte.read;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class ReadchinaActivity extends Activity {
/** Called when the activity is first created. */
private final static String s = "CopyContacts";
private List<String> list;
private ListView mListView;
private Button mButton;
private ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.button1);
mListView = (ListView) findViewById(R.id.list);
mListView.setVisibility(View.GONE);
data();
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mListView.setVisibility(View.VISIBLE);
mListView.setAdapter(adapter);
}
});
}
public void data() {
list = new ArrayList<String>();
String name = null;
// 得到ContentResolver對象
ContentResolver cr = getContentResolver();
// 取得電話簿開始第一項的游標
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, "sort_key_alt");
// 向下移動游標
while (cursor.moveToNext()) {
// 取得連絡人名字
int nameFieldColumnIndex = cursor
.getColumnIndex(PhoneLookup.DISPLAY_NAME);
name = cursor.getString(nameFieldColumnIndex);
list.add(name);
// 取得連絡人ID
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);
while (phone.moveToNext()) {
// 取得連絡人的號碼
int numberIndex = phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String number = phone.getString(numberIndex);
Log.v(s, "GET CONTACT'S NUMBER");
}
phone.close();
}
cursor.close();
Log.i("RG", "data--->>>" + list);
adapter = new ArrayAdapter<String>(ReadchinaActivity.this,
android.R.layout.simple_list_item_1, list);
}
}
上面紅色部分的解釋;
在android連絡人表裡面一個兩個比較有意思的字型sort_key和sort_key_alt,它裡面儲存的是連絡人名字的拼音字母,
例如連絡人名字是“李明”,則sort_key儲存的是“LI李MING明”,這樣如果是按sort_key或sort_key_alt排序的話,就可以實現按[a-z]或[z-a]
進行排序了
記得許可權哦-------------->>>>>:
<uses-permission android:name="android.permission.WRITE_CONTACTS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS" >
</uses-permission>
補充一下,這個驗證在2.3以上可行,2.1不行,2.2還沒測試