2011-07-29 24 views
0
Bitmap bmp = BitmapFactory.decodeFile("/sdcard/abc.jpg"); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 75, stream); ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
    int photoId = -1; 
    Cursor cursor = c.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID 
      + " = " + id, null, null); 
    int idIdx = cursor.getColumnIndexOrThrow(Photo.PHOTO_ID); 
    System.out.println("cursor counts------------------" 
      + cursor.getCount()); 

    System.out.println(Photo.PHOTO.equals(Photo.DATA15)); 

    if (cursor.moveToFirst()) 
    { 
     photoId = cursor.getInt(idIdx); 
     System.out.print("photo id-------------" + photoId); 
    } 
    cursor.close(); 

    if (photoId > 0) 
    { 
     System.out.println("do update"); 
     ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) 
       .withSelection(Data._ID + "=?", new String[] 
        { String.valueOf(photoId) }) 
       .withValue(Data.RAW_CONTACT_ID, id) 
       .withValue(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE) 
       .withValue(Photo.PHOTO, bytes).build()); 
    } 
    else 
    { 
     System.out.println("do insert"); 
     ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
       .withValue(Data.RAW_CONTACT_ID, id) 
       .withValue(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE) 
       .withValue(Photo.PHOTO, bytes).build()); 
    } 
    c.applyBatch(ContactsContract.AUTHORITY, ops); 

私は連絡先画像を挿入または更新するために上記のコードを使用しましたが、連絡先に画像を添付すると画像は連絡先リストに表示されます。 :)特定の連絡先の代わりに別の連絡先に画像が添付されることがあります(IDで指定されます)。アンドロイド:連絡先に画像を添付

+0

どれでもお手伝いできますか? – KingBright

答えて

1

最初は、あなたの質問のおかげで、私はそれからいくつかの啓発を得ることによって私の問題を理解した。私の問題は、連絡先に画像を追加する方法です。私はそれに従うようにそれを行う

public void testInsert() { 
     ContentValues values = new ContentValues(); 
     Uri rawContactUri = this.getContext().getContentResolver() 
       .insert(RawContacts.CONTENT_URI, values); 
     long rawContactId = ContentUris.parseId(rawContactUri); 
       //insert picture 
     Bitmap bmp = BitmapFactory.decodeFile("/sdcard/abc.jpg"); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bmp.compress(Bitmap.CompressFormat.JPEG, 75, stream); 
     values.clear(); 
     values.put(Data.RAW_CONTACT_ID, rawContactId); 
     values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE); 
     values.put(Photo.PHOTO, stream.toByteArray()); 
     this.getContext() 
       .getContentResolver() 
       .insert(android.provider.ContactsContract.Data.CONTENT_URI, 
         values); 

私の英語はあなたのすべての言葉を手に入れるのに十分ではありません。私のコードは連絡先に指定された絵を挿入するだけで、あなたを助けてくれることを願っています。

関連する問題