2012-02-24 45 views
0

我想在單個查詢中獲取我的手機聯繫人姓名,電話號碼和電子郵件地址。有可能獲取1查詢中的所有內容嗎?聯繫人顯示時應用程序掛起

我有我的手機和其get忌用幾乎1000個聯繫人,當我嘗試下面的代碼行,以顯示我的聯繫方式:

Cursor cursor = this.getContentResolver().query(intent.getData(), null, null, null,null); 
while (cursor.moveToNext()) 
{   
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));   
    hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
    if (hasPhone.equalsIgnoreCase("1")) 
     hasPhone = "true"; 
    else 
     hasPhone = "false" ; 

    if (Boolean.parseBoolean(hasPhone)) 
    { 
     Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
       null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, 
       ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE"); 
     while (phones.moveToNext()) 
     { 
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      String name = phones.getString(phones.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));         
     } 
     phones.close(); 
    } 
    // Find Email Addresses 
    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, 
     ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, 
     ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE");// contactId+ " DESC"); 
    while (emails.moveToNext()) 
    { 
     String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));    
     String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));    
    } 
    emails.close(); 
    } //while (cursor.moveToNext()) 
+0

請張貼在調用此方法的代碼.... – 2012-02-24 10:00:10

回答

1

做在的AsyncTask ...總是時間的首選方式耗時的過程...

我有同樣的問題,當我有大約500個聯繫人。我這麼做是的AsyncTask和它的工作很好..

+0

我已經c在異步任務中調用了這個函數。 doInBackground() – Monali 2012-02-24 06:35:39

+0

@Monali as ntc said在AsyncTask中執行它會正常工作 – Piyush 2012-02-24 06:52:14

相關問題