2012-05-24 3 views
4

Я работаю с контактами Androids и пытаюсь получить отдельные части данных. Я уже могу получать электронные письма, номера телефонов, их имя и т. Д. Однако мне сложно получить поле отношений.Получение контактного поля для контактов на Android

http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Relation.html

Так что моя цель состоит в том: Учитывая конкретный идентификатор (из базы данных контактов на Android), выяснить их отношение поля.

ответ

3

Это должно сработать. Идея состоит в том, чтобы соединить поиск в таблице данных, но использовать материал из CommonDataKinds. Это делается там, где пункт ... Data.MIMETYPE == CommonDataKinds.Relation.CONTENT_ITEM_TYPE. Это даст вам строку со всем материалом Relation.

import android.database.Cursor; 
import android.net.Uri; 
import android.provider.ContactsContract.CommonDataKinds.Relation; 
import android.provider.ContactsContract.Data; 
import android.util.Log; 
... 
public void logCatTheRelation(long contactId){ 
    Uri uri = Data.CONTENT_URI; 
    String where = String.format(
      "%s = ? AND %s = ?", 
      Data.MIMETYPE, 
      Relation.CONTACT_ID); 

    String[] whereParams = new String[] { 
       Relation.CONTENT_ITEM_TYPE, 
       Long.toString(contactId), 
    }; 

    String[] selectColumns = new String[]{ 
      Relation.NAME, 
      // add additional columns here 
    }; 


    Cursor relationCursor = this.getContentResolver().query(
      uri, 
      selectColumns, 
      where, 
      whereParams, 
      null); 
    try{ 
     if (relationCursor.moveToFirst()) { 
      Log.d("gizm0", relationCursor.getString(
           relationCursor.getColumnIndex(Relation.NAME))); 
     } 
     Log.d("gizm0", "sadly no relation ... "); 
    }finally{ 
     relationCursor.close(); 
    } 
} 
Смежные вопросы