获取所有手机通讯录列表?

时间:2010-05-25 03:42:34

标签: android

注意:必须适用于Android 1.5 - ContactsContract不能

简单的问题。我需要知道获取用户按下“联系人”按钮时显示的同一联系人列表的最佳方式。

你会认为这样的事情会起作用:

//For Contacts
Intent pickIntent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
this.startActivityForResult(pickIntent, RESULT);

//For Phones
Intent pickIntent = new Intent(Intent.ACTION_PICK, Phones.CONTENT_URI);
this.startActivityForResult(pickIntent, RESULT);

问题是不包括辅助Google帐户或Exchange联系人。通过辅助帐户,在Android中,您可以添加其他Gmail帐户以使邮件/联系人同步。上述意图不会列出那些额外的联系人。

我还被告知,在HTC Desire上,您可以添加未与Google同步的手机联系人。这些联系人也没有出现。

那么我如何获得一个真实的联系人列表,这样我就可以创建自己的列表活动,该活动可以在Google意图没有的情况下正常工作。

注意:必须适用于Android 1.5 - ContactsContract不能

4 个答案:

答案 0 :(得分:3)

您需要使用ContactsContract提供程序从数据库中读取数据。

有关如何使用ContactsContract的详细信息,请参阅此link

HTH!

答案 1 :(得分:3)

有关在Android上访问联系人的详细说明,请参阅here。它还可以帮助您创建使用ContactsContract的应用程序(如果可能),但仍适用于较旧的Android版本。

答案 2 :(得分:0)

请参阅下面的问题,How to read contacts on Android 2.0

从Android 2.0中折旧People类,您必须使用ContactsContract类。

答案 3 :(得分:-1)

Cursor cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while ( cursor.moveToNext() ) {
        String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

    }