0

Я пытаюсь получить контактную информацию. Я могу получить DISPLAY_NAME, Phone.DATA из Phone.CONTENT_URI. Я использую ниже коды:Как получить информацию о веб-сайте контакта в android?

String urlData = ""; 
    final String[] projection = new String[] { 
      ContactsContract.CommonDataKinds.Website.URL, 
      ContactsContract.CommonDataKinds.Website.TYPE 
    }; 
    final Cursor contactData = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, ContactsContract.Data.CONTACT_ID + "=" + contactId,null, null); 

    if (contactData.moveToNext()) { 

     int urlColumnIndex = contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.URL); 
     String url = contactData.getString(urlColumnIndex); 
     String urlType = contactData.getString(contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.TYPE)); 
     urlData += url + " " + urlType; 
     return urlData; 
    } 

Он возвращает значение display_name. Я не понимаю, почему я не могу получить данные url.

Как я могу это сделать?

EDIT

У меня есть Contacts._ID.

String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

Я использую ниже функцию, чтобы получить контактный адрес URL.

private void getURLById(String id, ContentResolver cr) { 
    Log.i("@@getURLById", "."); 

    final String[] projection = new String[] { 
      ContactsContract.CommonDataKinds.Website.URL, 
      ContactsContract.CommonDataKinds.Website.TYPE 
    }; 

    String selection = ContactsContract.Data._ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; 

    final Cursor websites = getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null); 

    Log.e("Count ", " " + websites.getCount()); 

Count возвращает ноль.

+0

Не уверен, что вы пытаетесь сделать, но если это помогает, вам нужно использовать Threads для доступа к веб-сайту через android. – 131

+0

Я просто хочу получить данные контактного URL. Почему мне нужно использовать потоки? –

ответ

0

сохранить запрос для таблицы данных, и добавьте следующий выбор: Data.CONTACT_ID + " = " + contactId + " and " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"

это будет выбирать только те строки, типа веб-сайта.

Код:

final String[] projection = new String[] { 
     ContactsContract.CommonDataKinds.Website.URL, 
     ContactsContract.CommonDataKinds.Website.TYPE 
}; 
String selection = Data.CONTACT_ID + " = " + contactId + " AND " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; 

final Cursor contactData = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null); 

UPDATE

Contacts._ID является неData._ID, изменить свой выбор на:

String selection = ContactsContract.Data.CONTACT_ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; 
+0

Нет таблицы с именем Website.CONTENT_URI. Я не получаю доступ к нему. –

+0

, то см. Мое редактирование, добавлен другой способ получения того же результата – marmor

+0

Данные не имеют таблицы CONTENT_URI. Я прав? –