只阅读真实联系人



我有一个程序,它读取联系人,然后将其显示在ListView中。但问题是,我的手机里总共有25000多个联系人,60%的联系人来自谷歌。因此,阅读联系人需要花费太多时间。如何读取有电话号码的联系人?

我使用的是这个代码:

 Cursor phones = as.getApplicationContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
   String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

}
phones.close();

您可以使用HAS_PHONE_NUMBER。联系人合同联系人HAS_PHONE_NUMBER。示例

  String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
    if (hasPhone.equals(ContactsContract.Contacts.HAS_PHONE_NUMBER))
      //do your thing

Where子句可用于筛选带有电话号码的联系人。使用以下代码检索联系人。

   CursorLoader cursorLoader = new CursorLoader(getActivity(), ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME},
            ContactsContract.Contacts.HAS_PHONE_NUMBER + " > 0 ", null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE ASC;");

要阅读联系人,您需要以下权限。

<uses-permission android:name="android.permission.READ_CONTACTS" />

相关内容

  • 没有找到相关文章

最新更新