gpt4 book ai didi

java - 无法在我的 Android 应用程序中获取电话号码

转载 作者:搜寻专家 更新时间:2023-11-01 09:17:59 25 4
gpt4 key购买 nike

我的 Android 应用程序需要检索有关联系人的信息(即电话号码和姓名。)我使用 getContentResolver().query() 编写了一些代码在结果中,我看到正在返回姓名和其他信息,例如我上次联系该人的时间,但不包括电话号码。我做错了什么?

代码:

Log.w("MyApp", "requesting " + phonesUri.toString());
Cursor contactCursor = context.getContentResolver().query(person, null, null, null, null);
contactCursor.moveToFirst();

for (int i = 0; i < contactCursor.getColumnCount(); i ++) {
Log.w("MyApp", contactCursor.getColumnName(i) + ": " + contactCursor.getString(i));
}

输出这个:

W/MyApp (21477): requesting content://contacts/people/169/phones
W/MyApp (21477): times_contacted: 6
W/MyApp (21477): custom_ringtone: null
W/MyApp (21477): primary_organization: null
W/MyApp (21477): phonetic_name:
W/MyApp (21477): status: null
W/MyApp (21477): label: null
W/MyApp (21477): number: null
W/MyApp (21477): type: null
W/MyApp (21477): mode: null
W/MyApp (21477): last_time_contacted: 1278113641980
W/MyApp (21477): display_name: (name removed for privacy)
W/MyApp (21477): im_handle: null
W/MyApp (21477): _id: 169
W/MyApp (21477): number_key: null
W/MyApp (21477): starred: 0
W/MyApp (21477): primary_email: null
W/MyApp (21477): name: (name removed for privacy)
W/MyApp (21477): primary_phone: null
W/MyApp (21477): im_account: null
W/MyApp (21477): notes:
W/MyApp (21477): im_protocol: null
W/MyApp (21477): send_to_voicemail: 0

最佳答案

  1. 您无需编写自己的迭代方法来打印到屏幕/日志,调用 DatabaseUtils.dumpCursorToString(cursor); 在游标上获取原始数据的字符串表示形式输出。

  2. 电话号码存储在自己的表中,需要单独查询。要查询电话号码表,请使用存储在 SDK 变量 ContactsContract.CommonDataKinds.Phone.CONTENT_URI 中的 URI。使用 WHERE 条件获取指定联系人的电话号码。

        if (Integer.parseInt(cur.getString(
    cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
    Cursor pCur = cr.query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
    null,
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
    new String[]{id}, null);
    while (pCur.moveToNext()) {
    // Do something with phones
    }
    pCur.close();
    }

对 Android 联系人 SQLite 数据库执行第二次查询。根据存储在 ContactsContract.CommonDataKinds.Phone.CONTENT_URI 中的 URI 查询电话号码。联系人 ID 作为 ContactsContract.CommonDataKinds.Phone.CONTACT_ID 存储在电话表中,WHERE 子句用于限制返回的数据。

查看本教程 Working With Android Contacts

关于java - 无法在我的 Android 应用程序中获取电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198365/

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