现在的位置: 首页 > 综合 > 正文

AsyncQueryHandler 读取通讯录

2013年08月27日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭
  //异步查询类
    private class MyAsyncQueryHandler extends AsyncQueryHandler {

        public MyAsyncQueryHandler(ContentResolver cr) {
            super(cr);
        }

        @Override
        protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
            // super.onQueryComplete(token, cookie, cursor);
            if (cursor != null && cursor.getCount() > 0) {
                cursor.moveToFirst();
                for (int i = 0; i < cursor.getCount(); i++) {
                    cursor.moveToPosition(i);
                    String name = cursor.getString(1);//电话名
                    String number = cursor.getString(2);//电话号
                    String newNumber = number.replace(" ", "");// 取出来的电话号码有的会有空格
                    if (newNumber.startsWith("+86")) {
                        numbers.put(newNumber.substring(3), name);
                    } else {
                        numbers.put(newNumber, name);
                    }
                }
            }
           
        }

    }

使用方法:

 // 新起线程执行,解决加载本Activity缓慢的问题
        MyAsyncQueryHandler asyncQuery = new MyAsyncQueryHandler(getContentResolver());
        Uri uri = Uri.parse("content://com.android.contacts/data/phones");
        String[] projection = {"_id", "display_name", "data1", "sort_key"};
        asyncQuery.startQuery(0, null, uri, projection, null, null,
                "sort_key COLLATE LOCALIZED asc");

抱歉!评论已关闭.