2011-02-02 6 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

この問題もあります。私は連絡先を選択し、新しい連絡先のアイコンがまだ設定されていない画像をトリミングした後、しかしhttp://developer.android.com/guide/topics/providers/content-providers.html

から取った次のコードを使用してURIを設定することで、使用して少しより多くの成功を持っていましたか?すでにファイルパスを知っている場合

// 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

+0

Thx。連絡先IDを読み取り、画像を直接添付する回避策、または "android.provider.ContactsContract.Intents.ATTACH_IMAGE"というインテントをまだ使用している回避策はありますか?それは私のようなコンテンツプロバイダーのページを読んで、私はIDを取得するために自分の連絡先リストを構築し、ユーザーが1つを選択し、その後、彼/彼女のイメージを上書きする必要があります。それとも私は何かを忘れてしまったのか? – Redfox

+0

私はIntent(Intent.ACTION_ATTACH_DATA)を使用して、連絡先アイコンと私が行った壁紙を設定するための2つのインテントアクティビティを提供します。申し訳ありませんが連絡先IDの問題であなたを助けることはできません。 – App8ite

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をすでにファイルを持っている場合、ビットマップストリームをオープンします。

関連する問題