2011-08-13 68 views
0

我製作了一個名爲Location Texter的Android應用程序。 除了當我想查找聯繫人時,它工作正常,我只希望帶有電話號碼的聯繫人出現。目前它顯示所有的聯繫人。 下面是代碼:僅限電話號碼的Android聯繫人

public void showContacts(Main main, Intent data) { 
    Cursor cursor = main.managedQuery(data.getData(), null, null, null, null); 
    cursor.moveToNext(); 
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

    Cursor phones = main.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 

    while (phones.moveToNext()) { 
     String phoneNo = phones.getString(phones.getColumnIndex(
       ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     main.numbers.add(phoneNo); 
    } 
    main.pickPhoneNos(name); 
    phones.close(); 
} 

它能做什麼是開放的意圖與所有聯繫人。當他們中的一個被選中時,它會回到主要活動。如果所選聯繫人有多個手機號碼,則表示要求用戶選擇其中一個手機號碼。我注意到的是我的一些嘗試沒有出現對話。 如果它很難理解我在做什麼,請下載該應用程序。

回答

0

你需要對你的問題更加具體,很難理解你在問什麼。 我可以看到代碼的一些問題。

  1. 你永遠不會呼籲cursorphones光標moveToFirst()
  2. 你永遠不會檢查第一個moveToNext()調用的返回值。

缺少對這些函數的調用可能會進一步調用方法崩潰。

+0

我並不感到驚訝與此代碼的問題。在選擇聯繫人方面我不太好。 我的應用程序的功能是向選定的聯繫人發送文本。目前,當您按下按鈕(查找聯繫人)時,會顯示所有聯繫人。但我只希望它顯示有電話號碼的聯繫人。 –

0

補充一點:

String 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.DISPLAY_NAME+" = "+contactId,null, null); 
    while (phones.moveToNext()) 
    { 
    ... 
    } 
    ... 
} 
相關問題