我試圖檢索顯示名稱和所有我的聯繫人的電話號碼,但我希望它只返回有數字的行。Android獲取聯繫人姓名和號碼查詢
目前我有像這樣和它的作品:
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,null, null, ContactsContract.Contacts.DISPLAY_NAME+ " COLLATE NOCASE");
while (cur.moveToNext())
{
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
contacts[index] = name;
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
pCur.moveToFirst();
numbers[index] = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
index++;
pCur.close();
}
的事情是,它需要像4-5秒,因爲它是運行cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
像400次加載。
現在我的理解是,聯繫人的姓名和號碼保存在不同的表格中,並且您需要姓名的編號以獲取號碼。
這可以以任何其他方式更快地完成嗎?
在此先感謝
@Maxim謝謝你回答一個老話題!你確定嗎? – mixkat 2011-04-28 14:42:14
@mixkat我這麼認爲。遊標有兩列。 [0] - 顯示名稱[1] - 電話號碼。我檢查了它適用於我。 – Maxim 2011-04-28 14:54:18
@Maxim對我來說,它會爲所有聯繫人返回相同的號碼! – mixkat 2011-04-28 15:11:04