[Android]通過PhoneLookup讀取所有電話號碼

來源:互聯網
上載者:User

前言

  讀取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,還請大家在這版本以上測試,之前沒有寫明測試條件還請諒解:)

 

結束

  公司的項目馬上要內測了,期待早一些與大家見面。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.