Android调用系统选择联系人,适合更多种手机,Google官方推荐

来源:互联网 发布:小偷公司知乎 编辑:程序博客网 时间:2024/05/16 12:27

跳转到系统联系人选择界面,获取相应联系人信息

调用方式:

Intent i = new Intent();i.setAction(Intent.ACTION_PICK);i.setData(ContactsContract.Contacts.CONTENT_URI);startActivityForResult(i, 1);
下面是onActivityResult(int requestCode, int resultCode, Intent data) 

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        String name = "";        String phoneNumber = "";        switch (resultCode) {        case RESULT_OK:            switch (requestCode) {            case 1:                if (data == null) {                    return;                }                Uri contactData = data.getData();                if (contactData == null) {                    return;                }                Cursor cursor = managedQuery(contactData, null, null, null,                        null);                if (cursor.moveToFirst()) {                    name = cursor                            .getString(cursor                                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));                    String hasPhone = cursor                            .getString(cursor                                    .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));                    String id = cursor.getString(cursor                            .getColumnIndex(ContactsContract.Contacts._ID));                    if (hasPhone.equalsIgnoreCase("1")) {                        hasPhone = "true";                    } else {                        hasPhone = "false";                    }                    if (Boolean.parseBoolean(hasPhone)) {                        Cursor phones = getContentResolver()                                .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                                        null,                                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID                                                + " = " + id, null, null);                        while (phones.moveToNext()) {                            phoneNumber = phones                                    .getString(phones                                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                        }                        phones.close();                    }                    cursor.close();                }                phoneNumber = phoneNumberFormat(phoneNumber);                Log.i("info", "联系人:"+ name + "--"                        + phoneNumberFormat(phoneNumber));                                             break;            }            break;        }        super.onActivityResult(requestCode, resultCode, data);    }

Google官方文档是这样写的:

private void pickContact() {    // Create an intent to "pick" a contact, as defined by the content provider URI    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);    startActivityForResult(intent, PICK_CONTACT_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST    if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {        // Perform a query to the contact's content provider for the contact's name        Cursor cursor = getContentResolver().query(data.getData(),        new String[] {Contacts.DISPLAY_NAME}, null, null, null);        if (cursor.moveToFirst()) { // True if the cursor is not empty            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);            String name = cursor.getString(columnIndex);            // Do something with the selected contact's name...        }    }}




原创粉丝点击