2013-06-08 3 views
2

Вот мой код, который даст мне имя и номер телефона контакта, нажав на элемент списка:Показать все номера телефонов, назначенные контакту?

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    final String contactName = cursor.getString(cursor.getColumnIndexOrThrow("DISPLAY_NAME")); 
    Cursor contCursor =(Cursor) listStarred.getItemAtPosition(position); 
    String strid = contCursor.getString(contCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

    ContentResolver cr = getContentResolver(); 

    String name = null; 
    String lname ="..."; 

    contCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"='"+strid+"'", 
      null, null); 

    int phoneNumberIndex = contCursor 
      .getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 
    Log.d("Count", String.valueOf(contCursor.getCount())); 

    if (contCursor != null) { 
     Log.v("CurNotNull", "Cursor Not null"); 
     try { 
      if (contCursor.moveToNext()) { 
       Log.v("MoveToFirst", "Moved to first"); 
       Log.v("CheckMTF", "Cursor Moved to first and checking"); 
       lname = contCursor.getString(phoneNumberIndex); 
       Toast.makeText(getApplicationContext(), contactName + " " + lname, Toast.LENGTH_SHORT).show(); 
      } 
     } finally { 
      Log.v("Finally", "In finally"); 
      contCursor.close(); 
     } 
} 
} 

Приведенный выше код, кажется, что работает отлично, но как вместо того, чтобы можно получить один телефонный номер, чтобы получить список с все номера контактов? Какие изменения необходимо сделать для получения массива с числами (и типом каждого) для выбранного контакта?

ответ

0

Пользователь, который ответил, удалил свой ответ, но он действительно помогает мне с кодом, который он предоставил. Мне удалось получить другие номера, используя часть предоставленного кода. Так вот усовершенствованный код:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    final String contactName = cursor.getString(cursor.getColumnIndexOrThrow("DISPLAY_NAME")); 
    contCursor =(Cursor) listStarred.getItemAtPosition(position); 
    String strid = contCursor.getString(contCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

    ContentResolver cr = getContentResolver(); 

    ArrayList<String> phones = new ArrayList<String>(); 
    contCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"='"+strid+"'", 
      null, null); 

    while (contCursor.moveToNext()){ 
     String phoneNo = contCursor.getString(contCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     Toast.makeText(getApplicationContext(), "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show(); 

    } 
} 

Теперь просто нужно сохранить номера на массив или список для заполнения ListView.

Смежные вопросы