Android获取联系人列表与电话号码

时间:2014-11-26 07:21:25

标签: android contacts android-contacts

我正在创建一个需要通过电话号码联系的应用。我可以使用以下代码

获取联系人姓名列表
private Contact[] contact_read;
private Cursor mCursor;

String[] projection = new String[] { Contacts.HAS_PHONE_NUMBER,
        Contacts._ID, Contacts.DISPLAY_NAME };

mCursor = managedQuery(Contacts.CONTENT_URI, projection,
        Contacts.HAS_PHONE_NUMBER + "=?", new String[] { "1" },
        Contacts.DISPLAY_NAME);

if (mCursor != null) {
    mCursor.moveToFirst();
    contact_read = new Contact[mCursor.getCount()];

int j = 0;
    do {

        contact_read[j] = new Contact(mCursor.getString(mCursor
                .getColumnIndex(Contacts.DISPLAY_NAME)));
        j++;
    } while (mCursor.moveToNext());

} else {
    System.out.println("Cursor is NULL");
}

Contact类是

private static class Contact {
    private String name = "";

    public Contact() {
    }

    public Contact(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

但是当我添加以下代码来获取电话号码时,应用程序崩溃了

ContentResolver cr = getContentResolver();
String id = mCursor.getString(mCursor.getColumnIndex(Contacts._ID));
Cursor pCur = cr.query(Phone.CONTENT_URI,null,Phone.CONTACT_ID +" = ?", new String[]{id}, null);
pCur.moveToFirst();

int j = 0;
do {
       contact_read[j] = new Contact(pCur.getString(pCur.getColumnIndex(Phone.NUMBER)));
        j++;
} while (pCur.moveToNext());

您方面的任何建议需要做些什么更改来获取电话号码?

1 个答案:

答案 0 :(得分:0)

这是从手机中获取所有联系人的代码

while (phones.moveToNext())
        {
          String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
          String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
           arraylist_connect.add(new Connect(name,phoneNumber,"Mobile"));

        }

        phones.close();