//异步查询类 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");