gpt4 book ai didi

Android - 按显示名称查找联系人

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:57 25 4
gpt4 key购买 nike

我正在尝试通过显示名称查找联系人。目标是打开此联系人并向其添加更多数据(特别是更多电话号码),但我很难找到我想要更新的联系人。

这是我正在使用的代码:

    public static String findContact(Context context) {

ContentResolver contentResolver = context.getContentResolver();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI;
String[] projection = new String[] { PhoneLookup._ID };
String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?";
String[] selectionArguments = { "John Johnson" };
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);

if (cursor != null) {
while (cursor.moveToNext()) {
return cursor.getString(0);
}
}
return "John Johnson not found";
}

我确实有一个名为“John Johnson”的联系人,但该方法总是返回“未找到”。我还尝试搜索只有一个名字的联系人,所以这没有区别。

我怀疑是uri、selection或selection arguments有问题,因为我在网上找不到任何搜索具有给定显示名称的联系人的示例,而且显示名称似乎是一种特殊的信息,不同来自例如电话号码。

有什么办法可以找到 John Johnson 吗?


更新:我发现了如何通过显示名称查找联系人:

        ContentResolver contentResolver = context.getContentResolver();
Uri uri = Data.CONTENT_URI;
String[] projection = new String[] { PhoneLookup._ID };
String selection = StructuredName.DISPLAY_NAME + " = ?";
String[] selectionArguments = { "John Johnson" };
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);

if (cursor != null) {
while (cursor.moveToNext()) {
return cursor.getString(0);
}
}
return "John Johnson not found";

此代码返回显示名称为“John Johnson”的第一个联系人的联系人 ID。在我的原始代码中,我的查询中有错误的 uri 和错误的选择。

最佳答案

我认为问题可能是由您设置的投影引起的。投影是用来告诉android你要查询哪一列数据然后你只给id列这样显示名称就不会返回了。尝试移除投影以查看它是否有效。

-- 光标 cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);
++ Cursor cursor = contentResolver.query(uri, null, selection, selectionArguments, null);

关于Android - 按显示名称查找联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625308/

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