私はAndroidの連絡先と協力して、特定のデータを取得しようとしています。メール、電話番号、名前などはすでに取得できますが、関係フィールドを取得するのに苦労しています。
したがって、私の目標は次のとおりです。特定のユーザーID(Androidの連絡先データベースから)を指定して、それらの関係フィールドを把握します。
私はAndroidの連絡先と協力して、特定のデータを取得しようとしています。メール、電話番号、名前などはすでに取得できますが、関係フィールドを取得するのに苦労しています。
したがって、私の目標は次のとおりです。特定のユーザーID(Androidの連絡先データベースから)を指定して、それらの関係フィールドを把握します。
これはうまくいくはずです。アイデアは、データ テーブルで検索を接続することですが、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();
}
}