5

私はAndroidの連絡先と協力して、特定のデータを取得しようとしています。メール、電話番号、名前などはすでに取得できますが、関係フィールドを取得するのに苦労しています。

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

したがって、私の目標は次のとおりです。特定のユーザーID(Androidの連絡先データベースから)を指定して、それらの関係フィールドを把握します。

4

1 に答える 1

4

これはうまくいくはずです。アイデアは、データ テーブルで検索を接続することですが、CommonDataKinds のものを使用します。これは where 句 ... で行われますData.MIMETYPE == CommonDataKinds.Relation.CONTENT_ITEM_TYPE。これにより、すべての関係を含む行が取得されます。

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();
    }
}
于 2012-08-10T12:34:53.510 に答える