前言
讀取Android系統的通訊錄時一般會先讀取連絡人然後再讀取其號碼,嵌套迴圈讀取。如果通訊錄人數不多速度尚可,但是通訊錄裡有1-2百人恐怕就比較慢了,如果硬體再差點體驗就更差了。可以使用
ContactsContract.CommonDataKinds.Phone.CONTENT_URI(對應contacts2.db的資料檢視view_data_restricted)視圖來讀取避免嵌套讀取,而對於PhoneLookup.CONTENT_FILTER_URI確不能直接使用,這裡分享一下小技巧。
聲明
歡迎轉載,但請保留文章原始出處:)
部落格園:http://www.cnblogs.com
農民伯伯: http://over140.cnblogs.com
本文
一、PhoneLookup.CONTENT_FILTER_URI的一般用法
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,...
API見這裡。如果直接如下使用PhoneLookup.CONTENT_FILTER_URI會報IllegalArgument Exception錯
getContentResolver().query(PhoneLookup.CONTENT_FILTER_URI,...
二、 技巧用法
Cursor c = getContentResolver().query(Uri.withAppendedPath(
PhoneLookup.CONTENT_FILTER_URI, "*"), new String[] {
PhoneLookup._ID,
PhoneLookup.NUMBER,
PhoneLookup.DISPLAY_NAME,
PhoneLookup.TYPE, PhoneLookup.LABEL }, null, null, sortOrder);
關鍵是這個"*",這樣就能取到所有的號碼以及相關的連絡人的姓名以及其他相關欄位,比通過連絡人再尋找其號碼要方便很多。
三、 維護
2011-10-28 本測試程式在G7上測試通過,Android版本為2.2,還請大家在這版本以上測試,之前沒有寫明測試條件還請諒解:)
結束
公司的項目馬上要內測了,期待早一些與大家見面。