gpt4 book ai didi

android - 我如何在 Android 中获取联系人的 groupId/GroupName?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:39 24 4
gpt4 key购买 nike

我有 Android 设备中的联系人列表。我想获取所有联系人的关联 groupIds 和 GroupName。我一直在尝试使用 ContactsContract.Groups._ID 来获取 ID,但我无法获取它。有人可以提供其他方法来获取联系人的组 ID 吗?

最佳答案

我就是这样做的。您可能会通过不执行两个查询来解决问题并找到更快的解决方案。

想法是使用 GroupMembership.GROUP_ROW_ID 从数据表中获取组的行 ID。当您拥有行 ID 时,您可以使用它来查询组表以获取组的名称(标题)。

Groups.TITLE 通常不是一个好名字,您可能必须对其进行格式化或四处搜索才能找到更好的名称。

获取联系人id的代码如下:

public long getGroupIdFor(Long contactId){
Uri uri = Data.CONTENT_URI;
String where = String.format(
"%s = ? AND %s = ?",
Data.MIMETYPE,
GroupMembership.CONTACT_ID);

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

String[] selectColumns = new String[]{
GroupMembership.GROUP_ROW_ID,
};


Cursor groupIdCursor = mContext.getContentResolver().query(
uri,
selectColumns,
where,
whereParams,
null);
try{
if (groupIdCursor.moveToFirst()) {
return groupIdCursor.getLong(0);
}
return Long.MIN_VALUE; // Has no group ...
}finally{
groupIdCursor.close();
}
}

下面是获取群组标题的代码:

public String getGroupNameFor(long groupId){
Uri uri = Groups.CONTENT_URI;
String where = String.format("%s = ?", Groups._ID);
String[] whereParams = new String[]{Long.toString(groupId)};
String[] selectColumns = {Groups.TITLE};
Cursor c = mContext.getContentResolver().query(
uri,
selectColumns,
where,
whereParams,
null);

try{
if (c.moveToFirst()){
return c.getString(0);
}
return null;
}finally{
c.close();
}
}

关于android - 我如何在 Android 中获取联系人的 groupId/GroupName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com