Java Can';在我的Android应用程序中找不到电话号码

Java Can';在我的Android应用程序中找不到电话号码,java,android,Java,Android,我的Android应用程序需要检索有关联系人的信息(即电话号码和姓名)。我使用getContentResolver().query()编写了一些代码。在结果中,我看到返回的是姓名,以及其他信息,如我上次与此人联系的时间,但不是电话号码。我做错了什么 守则: Log.w("MyApp", "requesting " + phonesUri.toString()); Cursor contactCursor = context.getContentResolver().query(person, n

我的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));
}
  • 您不需要编写自己的迭代方法来打印到屏幕/日志,调用
    DatabaseUtils.dumpCursorToString(cursor),以获取原始输出的字符串表示形式

  • 电话号码存储在各自的表中,需要单独查询。要查询电话号码表,请使用SDK变量ContactsContract.CommonDataTypes.phone.CONTENT\u 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 contacts SQLite数据库执行第二次查询。根据ContactsContract.CommonDataTypes.phone.CONTENT\u URI中存储的URI查询电话号码。联系人ID作为ContactsContact.CommonDataTypes.phone.contact\u ID存储在电话表中,WHERE子句用于限制返回的数据


    查看本教程

    谢谢。似乎旧的Eclair前的东西不再可靠地工作了。一旦我切换到ContactsContract,事情就开始运转了。
        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();
    }