2015-05-10 2 views
0

Я пытаюсь получить количество контактов, используя идентификатор из смс-ммс/разговоров URIандроид идентификатор получателя не возвращает правильный номер

final Uri URI_SIMPLE = Uri.parse("content://mms-sms/conversations").buildUpon() 
        .appendQueryParameter("simple", "true").build(); 

Я нахожу, хотя, что когда я запускаю запрос и он возвращает число, это не правильный номер для этого идентификатора, который я дал.

public static String fetchNumberfromID(String contactID, Context c) 
{ 
    Log.i("Utility", "*******ID********" + contactID); 

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

    //Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(phones)); 
    String number = null; 

    while (phones.moveToNext()) 
    { 
     number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     int type = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 

     switch (type) 
     { 
      case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
       // do something with the Home number here... 
       break; 
      case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
       // do something with the Mobile number here... 
       break; 
      case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
       // do something with the Work number here... 
       break; 
     } 
    } 
    phones.close(); 
    return number; 
} 

Я что-то не так? Адресат recipient_id должен быть правильным идентификатором, который используется правильно? Или есть где-то еще, я должен пытаться получить цифры от того, что они не хранятся в контактах?

ответ

1

recipient_id возвращаемого URI "content://mms-sms/conversations" коррелирует с _id области от относительно недокументированного канонического-адрес таблицы, которая содержит телефонные номера под address поля.

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

Cursor addressCursor = ctx.getContentResolver().query(Uri.parse("content://mms-sms/canonical-addresses"), null, "_id = " + recipientId, null, null); 
String phoneNumber = addressCursor.getString(addressCursor.getColumnIndex("address")); 
Смежные вопросы