【问题标题】:Trying to share image with intent Android尝试与意图 Android 共享图像
【发布时间】:2016-03-06 17:20:25
【问题描述】:

我正在尝试与社交媒体共享一张图片。它要求图像的路径,并且我已经从我的对象中检索了图像 URL,例如files.parsetfss.com/77c6003f-0d1b-4b55-b09c-16337b3a2eb8/tfss-7267d2df-9807-4dc0-ad6f-0fd47d83d20f-3eb7b9e4-d770-420c-a0a0-9ca4fc4a6a0a_1.png 的形式。共享意图显示,但是当我打开任何其他应用程序进行共享时,我遇到了没有 logcat 错误的崩溃。可能出了什么问题?

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.putExtra(Intent.EXTRA_STREAM, marketFeedItem.getDesign().getImage());
startActivity(Intent.createChooser(share, "Share your design!"));

更新的答案。这是我为使其正常工作所做的:

  ImageView imageView = (ImageView) feedItemView.findViewById(R.id.image);
                Drawable mDrawable = imageView.getDrawable();
                Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();

                String path = MediaStore.Images.Media.insertImage(getContentResolver(),
                        mBitmap, "Design", null);

                Uri uri = Uri.parse(path);

                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("image/*");
                share.putExtra(Intent.EXTRA_STREAM, uri);
                share.putExtra(Intent.EXTRA_TEXT, "I found something cool!");
                startActivity(Intent.createChooser(share, "Share Your Design!"));

【问题讨论】:

  • 那么marketFeedItem.getDesign().getImage()返回一个URL或者位图?
  • 尝试改成share.putExtra(Intent.EXTRA_STREAM, Uri.parse(marketFeedItem.getDesign().getImage()));
  • 它肯定会打印出 url。
  • @Bhargav 这给出了 IllegalArgumentException。
  • 异常消息说什么?只允许内容 Uri?

标签: java android android-intent parse-platform android-sharing


【解决方案1】:

如果 getImage() 返回您问题中的长字符串,则该 URL 不是有效的 URL,因为它缺少方案。

根据the docs,你需要在EXTRA_STREAM额外传递一个content:Uri。在实践中,file:Uri 也经常起作用。我希望您在使用其他方案时遇到问题,例如 https:http:

【讨论】:

    【解决方案2】:

    【讨论】:

    • 有点!我尝试了这种方法,它给了我FileNotFoundExceptionopen failed: ENOENT (No such file or directory)
    • 一般情况下,您必须将图像从 url 保存到本地存储并共享此本地位图
    【解决方案3】:

    您的图像文件解析服务器的 URL 对于共享意图无效,因此将加载的位图临时保存在您的设备中,然后使用该保存的位图 URL 共享图像。图片分享后,您可以从设备中删除保存的图片

    【讨论】:

    • 喜欢这个? URL url = new URL(marketFeedItem.getDesign().getImage()); Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream());然后在分享中使用图片?
    • 使用通用图像加载器 = >github.com/nostra13/Android-Universal-Image-Loader,它是管理服务器图像加载过程的绝佳库。它将提供 ImageLoadingListener ,它返回带有加载位图的图像 url
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多