在 Android 上获取关系联系人字段

Posted

技术标签:

【中文标题】在 Android 上获取关系联系人字段【英文标题】:Getting the Relationship contact field on Android 【发布时间】:2012-05-31 09:05:56 【问题描述】:

我正在使用 android 联系人并尝试获取特定的数据。我已经可以获取电子邮件、电话号码、他们的姓名等。但是我在获取关系字段时遇到了困难。

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

所以我的目标是:给定一个特定的用户 ID(来自 Android 上的联系人数据库),找出他们的关系字段。

【问题讨论】:

【参考方案1】:

这应该可以。这个想法是连接数据表中的搜索,但使用来自 CommonDataKinds 的东西。这是在 where 子句 ...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();
    

【讨论】:

以上是关于在 Android 上获取关系联系人字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中获取联系人的所有详细信息

在 Android 上通过电话号码获取联系人

在 Android 2.2 上读取联系人

通过 SQL 加入 Android 联系人表/数据库?

Android带索引联系人列表

我可以在 android 上启动联系人应用程序并实际获取所选联系人的手机号码吗?