2013-12-21 170 views
1

雖然聲音stra but,但我無法加載來自android聯繫人的聯繫人照片。我已經嘗試了很多代碼,但沒有任何工作。我的清單很好,權限被添加。厭倦了很多代碼,包括來自Android.com的這一個。它也沒有工作:無法加載聯繫人照片android

Cursor managedCursor = context.getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        new String[] { ContactsContract.Contacts._ID, 
          Phone.DISPLAY_NAME, Phone.NUMBER, Phone.PHOTO_ID }, 
        null, null, Phone.DISPLAY_NAME + " ASC"); 
      Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 
        contactId); 
      Uri photoUri = Uri.withAppendedPath(contactUri, 
        Contacts.Photo.CONTENT_DIRECTORY); 

      Cursor cursor = getContentResolver() 
        .query(photoUri,new String[] { acts.Photo.PH.CommonDataKinds.Photo.PHOTO }, 
         null, null, null); 
     if (cursor == null) { 
      return null; 
} 
     try { 
      return getContentResolver().openInputStream(photoUri); 
      // if (cursor.moveToFirst()) { 
      // byte[] data = cursor.getBlob(0); 
      // if (data != null) { 
      // return new ByteArrayInputStream(data); 
      // } 
      // } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

我使用Kitkat在Google Nexus 4中測試。任何人都可以幫忙

+0

引發的任何異常? logcat輸出? –

+0

inputstream返回null。 如果你使用uri作爲iv.setImageUri(uri)它總是說沒找到文件。 –

+0

您是否嘗試過我在下面指出的解決方案? –

回答

2

使用ContactsContract.Contacts.CONTENT_URI而不是Contacts.CONTENT_URI來獲取聯繫人uri。根據這個reference pageContacts.CONTENT_URI已被棄用。

此外,檢查這些了:

Example Code 1

Example Code 2

+0

謝謝Sanjeev。它的工作,示例1. 我正在使用:ContactsContract.Contacts._ID;而不是ContactsContract.CommonDataKinds.Phone.CONTACT_ID; –

+0

對不起,例2 * –