使用联系人ID加载联系详细信息界面

时间:2014-10-01 11:37:59

标签: android android-intent android-contacts

我想使用联系人ID访问联系人详细信息页面。(显示为图像)我试图这样做但是它的加载联系人列表不是相关的联系人详细信息页面。这是我想要使用相关联系人ID访问的界面

enter image description here

我使用了这段代码,

    Uri contactPhotoUri = Uri.withAppendedPath(
                        ContactsContract.Contacts.CONTENT_URI,
                        String.valueOf(contact.getContactId()));

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);

    intent.setDataAndType(contactPhotoUri,
                        "vnd.android.cursor.dir/contact");
    getActivity().startActivity(intent);

onActivityResult方法,

ArrayList<Object> contactInfo = EntityUtils.getContact(reqCode,
                    resultCode, data, getActivity());
            addContact(contactInfo);

getContact(),

@SuppressWarnings("deprecation")
public static ArrayList<Object> getContact(int reqCode, int resultCode, Intent data, FragmentActivity activity) {
    Uri contactData = data.getData();

    ArrayList<Object> contactInfo = null;
    String email = null;
    String officeEmail = null;
    Cursor c = activity.managedQuery(contactData, null, null, null, null);
    if (c.moveToFirst()) {
        String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

        String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
        // String hasEmail = c
        // .getString(c
        // .getColumnIndex(ContactsContract.Contacts.));
        String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.Contacts._ID, ContactsContract.CommonDataKinds.Phone.PHOTO_URI};

        if (hasPhone.equalsIgnoreCase("1")) {
            Cursor phones = activity.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null);

            // To get Email ids of Contact
            Cursor emails = activity.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);

            phones.moveToFirst();
            String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            // String contactId = phones.getString(phones
            // .getColumnIndex(ContactsContract.Contacts._ID));
            String imageUri = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI));

            while (emails.moveToNext()) {
                email = emails.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                // officeEmail = emails
                // .getString(phones
                // .getColumnIndex(ContactsContract.CommonDataKinds.OrganizationEmail.DATA));

            }

            Bitmap imageBitmap = loadContactPhoto(activity.getContentResolver(), Long.parseLong(id));

            // saveBitmapToFile(a);
            // create contact
            Contact contact = new Contact();
            contact.setFirstName(name);
            contact.setEmail(email);
            contact.setOfficeEmail(officeEmail);
            contact.setContactId(id);
            contact.setImageUri(imageUri);

            // create contactSourse
            ContactSource cs = new ContactSource();
            cs.setContactId(id);
            cs.setData(cNumber);
            cs.setType(email);

            contactInfo = new ArrayList<Object>();
            contactInfo.add(contact);
            contactInfo.add(cs);

        }

    }
    return contactInfo;
}

0 个答案:

没有答案