2011-02-02 103 views
2

我遇到了與here所述完全相同的問題。將圖像附加到聯繫人

我試圖用這個意圖: android.provider.ContactsContract.Intents.ATTACH_IMAGE

Starts an Activity that lets the user pick a contact to attach an image to.
聽起來很適合我,但遺憾的是導致一個ActivityNotFoundException

代碼:

import android.provider.ContactsContract; 
... 
try { 
    Intent myIntent = new Intent(); 
    myIntent.setAction(ContactsContract.Intents.ATTACH_IMAGE); 
    myIntent.setData(imageUri); 
    startActivity(myIntent); 
} catch (ActivityNotFoundException anfe) { 
    Log.e("ImageContact", 
      "Firing Intent to set image as contact failed.", anfe); 
    showToast(this, "Firing Intent to set image as contact failed."); 
} 

我不能在代碼中找到上述任何錯誤。該imageUri是下面的代碼正確的工作完美:

代碼:

try { 
    Intent myIntent = new Intent(); 
    myIntent.setAction(Intent.ACTION_ATTACH_DATA); 
    myIntent.setData(imageUri); 
    startActivity(myIntent); 
} catch (ActivityNotFoundException anfe) { 
    Log.e("ImageContact", 
      "Firing Intent to set image as contact failed.", anfe); 
    showToast(this, "Firing Intent to set image as contact failed."); 
} 

正如這導致了另一個菜單得到的接觸前鏈路提及。這是可以接受的,但並不完美。

回答

0

我也有這個問題。通過設置Uri使用下面的代碼取得更多的成功,使用以下代碼:http://developer.android.com/guide/topics/providers/content-providers.html

但是,選擇聯繫人並裁剪圖像後,新聯繫人圖標仍未設置?

// Save the name and description of an image in a ContentValues map. 
ContentValues values = new ContentValues(3); 
values.put(Media.DISPLAY_NAME, "road_trip_1"); 
values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles"); 
values.put(Media.MIME_TYPE, "image/jpeg"); 

// Add a new record without the bitmap, but with the values just set. 
// insert() returns the URI of the new record. 
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); 

// Now get a handle to the file for that record, and save the data into it. 
// Here, sourceBitmap is a Bitmap object representing the file to save to the database. 
try { 
    OutputStream outStream = getContentResolver().openOutputStream(uri); 
    sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream); 
    outStream.close(); 
} catch (Exception e) { 
    Log.e(TAG, "exception while writing image", e); 
} 
+0

它似乎可以正常工作1.6,2.1,2.2 - 2.0.1似乎有一個錯誤是聯繫人圖片無法從畫廊圖像手動設置。 – App8ite 2011-02-03 16:03:03

1

如果您已經知道了文件的路徑,你可以使用:

values.put(Images.Media.DISPLAY_NAME, fileName); 
values.put(Images.Media.DATE_ADDED, currentTime); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(Images.Media.ORIENTATION, 0); 
values.put(Images.Media.DATA, filePath); 
values.put(Images.Media.SIZE, size); 

getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values); 

這樣沒有NEAD打開一個位圖流,如果你已經擁有的文件。

相關問題