一、源码
Uri uri = Phone.CONTENT_URI
.buildUpon()
.appendQueryParameter(Data.EXTRA_ADDRESS_BOOK_INDEX, "true")
.build();
Cursor cursor = getContentResolver().query(uri,
new String[] { Phone.DISPLAY_NAME, Phone.NUMBER }, null,
null, Contacts.SORT_KEY_ALTERNATIVE);
Bundle bundle = cursor.getExtras();
if (bundle.containsKey(Data.EXTRA_ADDRESS_BOOK_INDEX_TITLES)
&& bundle.containsKey(Data.EXTRA_ADDRESS_BOOK_INDEX_COUNTS)) {
String sections[] = bundle
.getStringArray(Data.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
int counts[] = bundle
.getIntArray(Data.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
int total = 0;
for (int i = 0; i < sections.length; i++) {
Log.e("abc", "section:" + sections[i] + ":" + counts[i]);
total += Integer.valueOf(counts[i]);
}
// cursor.moveToPosition(arg0)
Log.e("abc", "cnt:" + total + ":" + cursor.getCount());
}
cursor.moveToFirst();
do {
int index = cursor.getColumnIndex(Phone.DISPLAY_NAME);
int num = cursor.getColumnIndex(Phone.NUMBER);
Log.e("abc",
"name:" + cursor.getString(index) + ":"
+ cursor.getString(num));
} while (cursor.moveToNext());
}
第三行:appendQueryParameter(Data.EXTRA_ADDRESS_BOOK_INDEX, "true",就是告诉contentProvider需要额外加入字母索引到cursor
第11--14行,就是获取出所有字母索引及个数