只读真实的联系人

时间:2015-06-23 05:31:52

标签: java android android-contacts contactscontract

我有一个程序可以读取联系人,然后将其显示在 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(); 中。但问题是我的手机总共有25k +联系人,而且60%的联系人都是google。因此,阅读联系人需要花费太多时间。如何阅读有电话号码的联系人?

我正在使用此代码:

{{1}}

2 个答案:

答案 0 :(得分:0)

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" />

答案 1 :(得分:0)

您可以使用HAS_PHONE_NUMBER。 FIDDLE DEMO 。 一个例子

onclicklistner
{
Intent viewallemp=new Intent(getApplicationContext(),ViewallEMP.class);
            startActivity(viewallemp);
 }