2016-12-14 11 views
0

私は連絡先に写真を挿入するための助けが必要でした。私が調査したところでは、私たちは電話に連絡先を挿入する方法と電話の連絡先を開始する方法、もう1つは、電話機に直接値を挿入することです。私はインテントを開始する必要がある最初の方法を使用しています。インテントを開始すると、画像を追加するソリューションが得られません。 2番目の方法の問題は、連絡先が既に追加されているかどうかを知らせず、エラーが発生する可能性があります。連絡先が重複する可能性があります。私は何をすることができるとお考えですか? BYTEARRAYにビットマップを変換するための画像をインテント経由でデフォルトの連絡先アクティビティに転送

Intent contactIntent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT,ContactsContract.Contacts.CONTENT_URI); 
    contactIntent.setData(Uri.parse("tel:" +"+91"+mMobile)); 
    contactIntent.putExtra(ContactsContract.Intents.Insert.NAME, name); 
    contactIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, email); 
    contactIntent.putExtra(ContactsContract.Intents.Insert.SECONDARY_PHONE, mobileEx); 

    Bitmap bit = BitmapFactory.decodeResource(getResources(), R.drawable.profile_image); 

    ArrayList<ContentValues> data = new ArrayList<ContentValues>(); 

    ContentValues row = new ContentValues(); 
    row.put(Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); 
    row.put(ContactsContract.CommonDataKinds.Photo.PHOTO, bitmapToByteArray(bit)); 
    data.add(row); 
    contactIntent.putParcelableArrayListExtra(Insert.DATA, data); 
    startActivity(contactIntent); 

とロジックの下に示すように 何私が今までやったことは、あなたが何かを行うことができ、連絡先エディタ画面のために意図を経由してプロフィール画像を通過させるための

 Intent contactIntent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT,ContactsContract.Contacts.CONTENT_URI); 
      contactIntent.setData(Uri.parse("tel:" +"+91"+mMobile)); 
      contactIntent.putExtra(ContactsContract.Intents.Insert.NAME, name); 
      contactIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, email); 
      contactIntent.putExtra(ContactsContract.Intents.Insert.SECONDARY_PHONE, mobileEx); 
      startActivity(contactIntent); 
+1

イメージのURIをインテントで渡すようにしてください。イメージではありません。自己- – thepaulo

答えて

2

ある

です
private byte[] bitmapToByteArray(Bitmap bit) { 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bit.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 
    return byteArray; 
} 
+0

btimaptobytearrayの機能を教えてください。 –

+0

私は答えを更新しました、それを確認してください –

+0

こんにちは、ありがとう、これは動作します! –

関連する問題