首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在启动ACTION_SEND intent时附加位图

如何在启动ACTION_SEND intent时附加位图
EN

Stack Overflow用户
提问于 2013-06-18 12:34:27
回答 4查看 27.9K关注 0票数 22

我有这样的代码:

代码语言:javascript
复制
 Intent intent = new Intent(); 
 intent.setAction(Intent.ACTION_SEND); 
 startActivity(intent); 

它将在Android上成功推出一个消息应用程序。

但是如何在启动intent时附加Bitmap对象呢?

我读过http://developer.android.com/reference/Android/content/Intent.html,我需要的是EXTRA_STREAM,就像这样:

intent2.putExtra(Intent.EXTRA_STREAM,_uri);

但在我的例子中,我有一个Bitmap对象的引用,而不是Bitmap的URI。

请告诉我如何附加Bitmap对象?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-18 12:39:09

代码语言:javascript
复制
    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");

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

票数 30
EN

Stack Overflow用户

发布于 2015-09-29 01:57:39

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

代码语言:javascript
复制
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();
    }

}
票数 23
EN

Stack Overflow用户

发布于 2013-06-18 15:21:02

试试这个,它可能对你有帮助:

代码语言:javascript
复制
ByteArrayOutputStream bos = new ByteArrayOutputStream();  
yourbitmapimagename.compress(CompressFormat.PNG, 0, bos);
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_STREAM, bos.toByteArray());
startActivity(intent); 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17160593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档