2012-07-31 122 views
0

我使用以下代碼從聯繫人中檢索所有電話號碼。從聯繫人獲取所有電話號碼

Cursor c = context.getContentResolver().query(
         Data.CONTENT_URI, 
         new String[] { Phone.NUMBER }, 
         Data.MIMETYPE + "='" +  Phone.CONTENT_ITEM_TYPE 
           + "'", null, null); 

它在我的Android手機中完美運行。

但是一些用戶說我的應用程序並沒有從聯繫人中獲得所有電話號碼,只是其中的一部分。我無法弄清楚原因。爲什麼?

+0

的[閱讀所有聯繫人的電話號碼儲存在機器人]可能重複(http://stackoverflow.com/questions/2356084/read-all-contacts-phone-numbers-in-android) – Praveenkumar 2012-07-31 05:00:45

+0

號我的問題這就是爲什麼它不能很好地工作。根據http://developer.android.com/intl/zh-CN/reference/android/provider/ContactsContract.Data.html – 2012-07-31 05:39:19

回答

3

這將獲得光標持有基地聯繫人數據,並將通過聯繫人的電話號碼循環,可以有多個。

Uri uri = data.getData(); 

Cursor cursor=ctx.getContentResolver().query(uri, null, null, null, null); 


while (cursor.moveToNext()) { 
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

    if (Boolean.parseBoolean(hasPhone)) { 
        // You know have the number so now query it like this 
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
      null, null); 

     while (phones.moveToNext()) { 
      String phoneNumber = phones.getString( 
        phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));     
     } 
     phones.close(); 
    } 
} 
+0

它應該工作得很好。但是,如果我只想要所有電話號碼,該方法太慢。無論如何,謝謝你的回覆。 – 2012-07-31 05:41:52

相關問題