2012-01-04 156 views
0

我在收到聯繫人照片時遇到了問題,您在消息傳遞應用中看到的那種照片和新的Gmail通知。我已經看過了幾個例子代碼,但一切都沒有工作對我來說,這是我目前有獲取聯繫人照片

本應該得到的照片URI,並把它變成一個位圖圖像使用或至少它似乎

public static Bitmap getContactImage(long id,Context context){ 
    InputStream input = getPhoto(id,context); 
    if(input == null){ 
     return null; 
    } 
    return BitmapFactory.decodeStream(input); 
} 

public static InputStream getPhoto(long contactId,Context context){ 
    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId); 
    Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY); 
    InputStream in = null; 
    try{ 
     in = context.getContentResolver().openInputStream(photoUri); 
    }catch(FileNotFoundException e){ 
     Log.d(TAG, e.toString()); 
    } 
    return in; 
} 

,這是我怎麼稱呼

long contactID = 0; 
       Bitmap image = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_contact_picture); 
       Cursor contact = context.getContentResolver().query(Data.CONTENT_URI,new String[] {Data.CONTACT_ID},Email.ADDRESS + "='" + from + "'",null,null); 
       if(contact.moveToFirst() && contact != null){ 
        contactID = contact.getLong(0); 
        image = getContactImage(contactID,context); 
       } 

我得到的接觸式ID罰款(通過搜索查詢對人的數量選中),但隨後沒有找到聯繫人照片。我知道有一張照片,因爲我正在對自己進行測試,以確保我有一張聯繫照片,所以我不知道我該怎麼做。

我總是發現導航聯繫供應商非常麻煩,因爲它有這麼多。

回答

1

我得到了它,我沒有反對RAW_CONTACT_ID的查詢與MIMETYPE,這給了我,我一直在尋找

Cursor p = context.getContentResolver().query(Data.CONTENT_URI,new String[] {Photo.PHOTO}, 
       Data.RAW_CONTACT_ID + "=" + contactId + " AND " + Data.MIMETYPE + "='" + Photo.CONTENT_ITEM_TYPE+"'" 
       ,null,null); 
0

這適用於我。

//Querying for all contacts(Apply selection parameter in query to get a specific contact) 

Uri contacts = ContactsContract.Contacts.CONTENT_URI; 

cur = null; 
cur = Main.context.getContentResolver().query(contacts, null, null, 
        null, null);  

int contactIdIndex = cur.getColumnIndex(ContactsContract.PhoneLookup._ID); 
int contactId = cur.getInt(contactIdIndex); 

//照片

Uri contactUri = ContentUris.withAppendedId(
        ContactsContract.Contacts.CONTENT_URI, contactId); 

      Uri photoUri = Uri.withAppendedPath(contactUri, 
        ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 

      Cursor cursor = cr 
        .query(
          photoUri, 
          new String[] { ContactsContract.CommonDataKinds.Photo.PHOTO }, 
          null, null, null); 

      if (cursor != null && cursor.moveToFirst()) { 
       byte[] data = cursor.getBlob(0); 

       _conEntry.setPhoto(data); 
//Data is the photo bytes for you 

      } 

      if (cursor != null) 
       cursor.close(); 
0

你就錯了。

首先,從ContactsContract.Contacts表的PHOTO_ID列中獲取照片的ID。接下來,通過在上一步中獲得的ID,從ContactsContract.Data中的PHOTO列(實際上是DATA15的別名)中檢索一個字節數組。最後,使用BitmapFactory解碼該字節數組以獲取位圖。 Here是關於此的文檔。

+0

我想,這張照片,但它沒有工作,我不得不這樣做'光標P = context.getContentResolver()。query(Data.CONTENT_URI,new String [] {Photo.PHOTO}, \t \t \t Data.RAW_CONTACT_ID +「=」+ contactId +「AND」+ Data.MIMETYPE +「='」+ Photo .CONTENT_ITEM_TYPE +「'」 \t \t \t,null,null);'並且讓我有圖像 – tyczj 2012-01-05 06:02:25