Bja*_*sen 10 android android-contentresolver
我正在尝试通过显示名称找到联系人.目标是打开此联系人并向其添加更多数据(特别是更多的电话号码),但我很难找到我想要更新的联系人.
这是我正在使用的代码:
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";
}
Run Code Online (Sandbox Code Playgroud)
我确实有一个名为"John Johnson"的联系人,但该方法始终返回"未找到".我也尝试用一个名字搜索一个联系人,这没什么区别.
我怀疑它的东西,错误的URI,选择或选择论,因为我无法找到搜索与给定的显示名称接触的任何例子在线,似乎显示名称是一种特殊的信息,例如从不同一个电话号码.
任何想法如何找到约翰逊?
更新:我发现了如何通过显示名称找到联系人:
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";
Run Code Online (Sandbox Code Playgroud)
此代码返回显示名称为"John Johnson"的第一个联系人的联系人ID.在我的原始代码中,我的查询中包含错误的uri和错误的选择.
您使用的 URI 旨在仅过滤电话号码:
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI;
Run Code Online (Sandbox Code Playgroud)
您需要使用有权访问该display_name列的 URI,如下所示:
Uri uri = ContactsContract.Data.CONTENT_URI;
Run Code Online (Sandbox Code Playgroud)
Android SDK 文档上对使用哪些 URI 以及何时使用它们进行了详细的细分:
如果您需要读取单个联系人,请考虑使用 CONTENT_LOOKUP_URI 而不是 CONTENT_URI。
如果您需要通过电话号码查找联系人,请使用 PhoneLookup.CONTENT_FILTER_URI,它已为此目的进行了优化。
如果您需要按部分姓名查找联系人(例如,生成输入时过滤建议),请使用 CONTENT_FILTER_URI URI。
如果您需要通过某些数据元素(例如电子邮件地址、昵称等)查找联系人,请对 ContactsContract.Data 表使用查询。结果将包含联系人 ID、姓名等。
| 归档时间: |
|
| 查看次数: |
9387 次 |
| 最近记录: |