小编Tri*_*tan的帖子

以编程方式更改联系人图片

我有一张照片,存储在 Android 手机中。我希望能够更改联系人的图片。

到目前为止,我所做的是启动联系人选择器,让用户选择一个联系人,然后获取所选联系人的 URI。从这个联系人中,我可以获取关联的 rawContact 并使用此代码

Uri rawContactPhotoUri = Uri.withAppendedPath(
             ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
             RawContacts.DisplayPhoto.CONTENT_DIRECTORY);
     try {
         AssetFileDescriptor fd =
             getContentResolver().openAssetFileDescriptor(rawContactPhotoUri, "rw");
         OutputStream os = fd.createOutputStream();
         os.write(photo);
         os.close();
         fd.close();
     } catch (IOException e) {
         // Handle error cases.
     }
Run Code Online (Sandbox Code Playgroud)

问题是,AssetFIleDescriptor 始终为空(当我对其调用 length 时,我们总是得到 -1)。

我并不是要求整个解决方案,只是要求一些可以帮助我实现这一目标的线索。我似乎无法在 StackOverflow 上找到这个问题,所以任何帮助将不胜感激。

编辑

当我们提出问题时,我们总是能找到解决方案。我想分享给其他人

所以我放弃了android链接并找到了另一个链接: http://wptrafficanalyzer.in/blog/programatically-adding-contacts-with-photo-using-contacts-provider-in-android-example/

图片选择器返回所选联系人的 Uri,因此您可以获取它的 Contact._ID :

// This is onActivityResult
final Uri uri = data.getData();
final Cursor cursor1 = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
final long contactId = cursor1.getLong(cursor1.getColumnIndex(Contacts._ID); …
Run Code Online (Sandbox Code Playgroud)

java android image contacts

5
推荐指数
1
解决办法
4627
查看次数

标签 统计

android ×1

contacts ×1

image ×1

java ×1