android3种方式查询手机通讯录联系人

来源:互联网 发布:pixlr软件 编辑:程序博客网 时间:2024/05/29 12:29

3种方式查询手机通讯录联系人

本文是提供了3种方式查询通讯录,获取手机通讯录中所有联系人的ID和联系人姓名。

  • 通过ContentResolver类的query方法,这种方法在主线程中查询数据,query方法返回数据库的游标Cursor,需要自己去手动关闭。
  • 通过Activity类的managedQuery方法,这种方法查询同样是在主线程中,但是不需要手动关闭Cursor,因为Activity类销毁时再onDestroy方法中会去关闭。
  • 通过Android提供的异步查询框架AsyncQueryHandler,这个类是一个抽象类,提供异步查询,当查询完毕后,会调用onQueryComplete方法,该方法参数cursor是查询系统数据库完成后获得的游标。

实例代码1

通过ContentResolver类的query方式查询,例如:

@获取手机通讯录联系人ID和NAMEprotected void getAllContacts() {    ContentResolver cr = this.getContentResolver();      Cursor cursor = cr.query(        ContactsContract.Contacts.CONTENT_URI, null, null, null,         ContactsContract.Contacts._ID + " DESC");        while(cursor.moveToNext()) {              System.out.println(cursor.getString(              cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)));              System.out.println(cursor.getString(              cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));          }      cursor.close();     }

实例代码2

通过Activity类的managedQuery方法

@获取手机通讯录联系人ID和NAMEprivate void getContacts(){        Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,                null,                 null,                 null,                 null);        while (cursor.moveToNext()) {            System.out.println(               cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)));              System.out.println(               cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));          }    }

实例代码3

通过AsyncQueryHandler

@获取手机通讯录联系人ID和NAMEprivate void getContactsAsync(){        MyQueryHandler qh = new MyQueryHandler(getContentResolver());        qh.startQuery(0, null, ContactsContract.Contacts.CONTENT_URI,                 null,                null,                 null,                null);    }@自定义一个异步查询类,继承AsyncQueryHandler类class MyQueryHandler extends AsyncQueryHandler{        public MyQueryHandler(ContentResolver cr) {            super(cr);        }        @Override        protected void onQueryComplete(int token, Object cookie, Cursor cursor) {            super.onQueryComplete(token, cookie, cursor);            while(cursor.moveToNext()){                System.out.println(cursor.getString(                    cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID)));                  System.out.println(cursor.getString(                    cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));              }            cursor.close();        }    }
0 0
原创粉丝点击