如何在启动 ACTION_SEND 意图时附加位图

新手上路,请多包涵

我有这段代码:

  Intent intent = new Intent();
 intent.setAction(Intent.ACTION_SEND);
 startActivity(intent);

这将在 Android 上成功启动消息应用程序。

但是我怎样才能在启动意图时附加一个位图对象呢?

我已经阅读了 http://developer.android.com/reference/Android/content/Intent.html ,我需要的最接近的东西是 EXTRA_STREAM,如下所示:

intent2.putExtra(Intent.EXTRA_STREAM, _uri);

但我的情况是,我有一个位图对象的引用,而不是位图的 URI。

请告诉我如何附加位图对象?

原文由 KCRaju 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 486
2 个回答
    String pathofBmp = Images.Media.insertImage(getContentResolver(), bitmap,"title", null);
    Uri bmpUri = Uri.parse(pathofBmp);
    final Intent emailIntent1 = new Intent(     android.content.Intent.ACTION_SEND);
    emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri);
    emailIntent1.setType("image/png");

其中 bitmap 是您的位图对象,必须存储在 SD 卡中。然后将该 Uri 用于 shareimage。

原文由 Sagar Maiyad 发布,翻译遵循 CC BY-SA 3.0 许可协议

您必须先将位图保存到文件中。您可以将其保存到应用程序的缓存中

private void shareBitmap (Bitmap bitmap,String fileName) {
    try {
        File file = new File(getContext().getCacheDir(), fileName + ".png");
        FileOutputStream fOut = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, fOut);
        fOut.flush();
        fOut.close();
        file.setReadable(true, false);
        final Intent intent = new Intent(     android.content.Intent.ACTION_SEND);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        intent.setType("image/png");
        startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

原文由 Gil SH 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题