java - android 读取联系人的问题

标签 java android android-emulator

我正在尝试使用此代码读取联系人,但它只能获取联系人,但不能获取联系人数据。请 告诉我我是否走错了路,或者这有什么问题。

Cursor contacts = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

    while(contacts.moveToNext()) {
       int contactIdColumnIndex = contacts.getColumnIndex(ContactsContract.Contacts._ID);
       long contactId = contacts.getLong(contactIdColumnIndex);
       System.out.println(contactId);

       Cursor c = getContentResolver().query(Data.CONTENT_URI,
                  new String[] {Data._ID, Phone.NUMBER, Phone.TYPE},
                  Data.CONTACT_ID + "=?" + " AND "
                          + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
                  new String[] {String.valueOf(contactId)}, null);
//retrieving data
 while(c.moveToNext()){
           long Id=c.getLong(0);
           String number=c.getString(1);
           String type=c.getString(2);
           String name=c.getString(3);
           System.out.println(Id);
           System.out.println(number);
           System.out.println(type);
           System.out.println(name);

       }

       c.close();
}
contacts.close();

当我调试它时,它运行良好,并且它只打印 ContactIds 1 2 3 4

但没有数据...(为长问题道歉)

最佳答案

试试这个代码

String number = "";

    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null,null, null, null);
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                            new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, 
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                            new String[]{id}, null);

                    while (pCur.moveToNext()) {
                        for(int i=0;i<pCur.getColumnCount();i++)
                            number = pCur.getString(i);

                    } 
                    pCur.close();
                    pCur = null;
                }

        }
    }
    cur.close();
    cur = null;
    cr = null;

关于java - android 读取联系人的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857806/

相关文章:

扫描仪对象的 Java 'cannot find symbol'

android - 我如何区分它是 FireStick 还是 FireTV

java - fragment 中按钮的 onClickListener 问题

Android 应用程序不会在低于 targetSDKVersion 的版本上启动

java - 透明的 JButton 仍在绘制其背景

java - 在 getNode 方法之前检查链表是否不为空

基于 Java 的 SSL CLIENT 演练,包括从 Restful 服务中提取 JSON 对象

android - 如何访问适用于 iOS 和 Android 的 Xamarin.Forms 中的目录路径?

android - Genymotion 2.7 模拟器拒绝连接到 ADB

android - 从 SDK r7 更新到 SDK r12 后,模拟器帧速率在 2D 游戏上非常慢