如何使用SHOW_OR_CREATE_CONTACT并为联系人设置照片?

时间:2015-01-11 14:51:31

标签: android android-intent android-contacts android-bitmap

背景

我知道可以通过此意图设置各种字段,例如地址,电话号码,姓名等......:

final Intent intent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT, Uri.parse("tel:" +PhoneNumberService.formatNumber(phoneNumber, PhoneNumberFormat.NATIONAL));
intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
intent.putExtra(ContactsContract.Intents.Insert.POSTAL_ISPRIMARY,address);
intent.putExtra(ContactsContract.Intents.Insert.POSTAL,address);
... //other stuff, like on this post: http://stackoverflow.com/q/3456319/878126

问题

我想知道是否可以添加照片。

我尝试了什么

我已经尝试了下一个代码,但它似乎不起作用:

public static byte[] toByteArray(final Bitmap bitmap) {
    if (bitmap == null || bitmap.isRecycled())
        return null;
    final ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    final byte[] byteArray = stream.toByteArray();
    return byteArray;
}


final byte[] imageByteArray = toByteArray(mBitmap);
intent.putExtra(ContactsContract.CommonDataKinds.Photo.PHOTO, imageByteArray);

问题

是否可以放置照片?如果是这样,怎么样?

我还试图弄清楚添加是否成功,这样我就可以获得联系密钥,并且如果需要可以修改它,但似乎" startActivityForResult&# 34;在这里没有帮助。

1 个答案:

答案 0 :(得分:0)

我想知道你是否找到了合适的答案。我会评论,但我没有足够的积分。我还在寻找一个好的答案。

从文档中,无法显式创建新的联系人插入。这意味着需要使用URI和值(隐式)插入新的联系人数据。

唯一可行的方法是使用内容提供商创建新联系人,并添加包括默认图像在内的所有字段。然后立即使用ACTION_EDIT让用户编辑字段。

另请参阅Intents.ATTACH_IMAGE