簡體   English   中英

你如何通過android 2.3.6中的聯系提供商獲得聯系人照片?

[英]How do you get a contact photo through the contact provider in android 2.3.6?

我有這個適用於android 4的版本( String email是一個gmail地址):

private Uri getPhotoUriFromEmail(String email) {
    Uri u = null;
    String[] projection = { ContactsContract.CommonDataKinds.Email.PHOTO_URI };
    String photoUri;
    ContentResolver cr = context.getContentResolver();
    Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection,
            ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?", 
            new String[]{email}, null);
    if (emailCur.moveToNext()) { 
        photoUri = emailCur.getString(
                emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.PHOTO_URI));
        u = Uri.parse(photoUri);
    }
    return u;
}

什么是2.3.6版本? (當我將API 8設置為我的最小API支持時,Android SDK也不應該警告我使用API​​ 11嗎?因為它沒有...)

您可以通過這種方式獲取聯系人照片uri,而無需使用ContactsContract.CommonDataKinds.Email.PHOTO_URI

private Uri getPhotoUriFromEmail(String email) {
    Uri u = null;
    String[] projection = { ContactsContract.CommonDataKinds.Photo.CONTACT_ID };
    String photoUri;
    ContentResolver cr = getContentResolver();
    Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
            projection,
            ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?",
            new String[]{email}, null);
    if (emailCur.moveToNext()) {
        int columnIndex = emailCur.getColumnIndex(
                              ContactsContract.CommonDataKinds.Photo.CONTACT_ID);
        long contactId = emailCur.getLong(columnIndex);

        u = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, 
                                       contactId);
        u = Uri.withAppendedPath(u, 
                                ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
    }
    return u;
}

或者,您可以使用方法ContactsContract.Contacts .openContactPhotoInputStream(ContentResolver, Uri)這種方式獲取照片流:

private InputStream getPhotoInputStreamFromEmail(String email) {
    Uri u = null;
    String[] projection = { ContactsContract.CommonDataKinds.Photo.CONTACT_ID };
    String photoUri;
    ContentResolver cr = getContentResolver();
    Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            projection,
            ContactsContract.CommonDataKinds.Email.ADDRESS + " = ?",
            new String[]{email}, null);
    if (emailCur.moveToNext()) {
        int columnIndex = emailCur.getColumnIndex(
                ContactsContract.CommonDataKinds.Photo.CONTACT_ID);
        long contactId = emailCur.getLong(columnIndex);

        u = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
                contactId);
        return ContactsContract.Contacts.openContactPhotoInputStream(cr, u);
    }
    return null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM