大赵传奇

援引事类,扬搉古今,举要删芜,言辩而理切--QQ276605216

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

选择一个联系人:

    private void pickContact(){
        Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/people"));
        pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
        startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
    }

返回:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == PICK_CONTACT_REQUEST){
            if(resultCode == RESULT_OK){
                Uri result = data.getData();
                //long contactId = ContentUris.parseId(result);

                ContentResolver cr = getContentResolver();
                Cursor phones = cr.query(result, null ,null, null, null);

                int rawContactId = phones.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID);
                int nameIdx = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                int contactIdIdx = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID);
                int phoneNumberIdx = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                int photoIdIdx = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID);
                phones.moveToFirst();

                String idContact = phones.getString(contactIdIdx);
                String name = phones.getString(nameIdx);
                int types = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                String phoneNumber = phones.getString(phoneNumberIdx);

                Bitmap bitmap = loadContactPhoto(cr, phones.getLong(rawContactId));
                showSelectedNumber(types, phoneNumber, name, bitmap);

                phones.close();
            }
        }
     }

加载联系人头像

public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
if (input == null) {
return null;
}
return BitmapFactory.decodeStream(input);
}

 

打印所有联系人:

                Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
                // use the cursor to access the contacts
                while (phones.moveToNext())
                {
                    String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    // get display name
                    phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    String types = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

                    // get phone number
                    System.out.println(name + "........"+types+".........."+phoneNumber);
                }
                phones.close();

 

如果是只选择一个电话,可以这样:

private static final String[] phoneProjection = new String[] { ContactsContract.CommonDataKinds.Phone.DATA };
Uri contactUri = data.getData();
if (null == contactUri) return;
//no tampering with Uri makes this to work without READ_CONTACTS permission
Cursor cursor = getContentResolver().query(contactUri, phoneProjection, null, null, null);
if (null == cursor) return;
try {
while (cursor.moveToNext()) {
String number = cursor.getString(0);
// ... use "number" as you wish
Toast.makeText(getBaseContext(), number, Toast.LENGTH_LONG).show();
}
} finally {
cursor.close();
}

 

posted on 2017-09-29 15:44  赵长青  阅读(285)  评论(0编辑  收藏  举报