Java Android:共享位图未保存到SD

Java Android:共享位图未保存到SD,java,android,bitmap,Java,Android,Bitmap,我有一个应用程序,截图和分享与共享的意图。而不是每次用户只想共享图像时保存多个图像。下面是我用于保存到SD的图像的代码 Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/png"); dir = "file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Folder/" + locat

我有一个应用程序,截图和分享与共享的意图。而不是每次用户只想共享图像时保存多个图像。下面是我用于保存到SD的图像的代码

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/png");

dir = "file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Folder/" + location;
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(dir));

startActivity(Intent.createChooser(share, "Share Image"));
但是我不知道如何简单地保存位图,例如

share.putExtra(Intent.EXTRA_STREAM, theBitmap);
有没有办法在不保存图像的情况下执行此操作


谢谢

是的,您无需将图像另存为文件即可发送图像。从您发布的代码来看,我不知道您是如何发送图像的,但您使用以下内容转换文件:

                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] data;
                if(yourBitmap!=null){
                yourBitmap.compress(CompressFormat.PNG, 75, bos);
                }else if (yourBitmap==null){
                    Log.w("Image going to server is null","Lost in memory");
                }
                try{
                data = bos.toByteArray();
我不知道你是否通过你的应用程序将图像发送给其他用户,但我就是这样使用它上传到服务器的。当你处理完图像后,你会像这样将其全部置零

                bos = null;
                data = null;
                yourBitmap = null;

我最终做的是将一个“临时”图像保存到SD/手机上,然后每次都覆盖该图像

尝试使用此选项:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
Uri uri = Uri.parse("android.resource://com.your.app/drawable/" + yourimage);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TEXT, shareImage);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Send your image"));

这段代码对我发送应用程序中使用的drawables非常有用。sd卡上未保存任何图片。唯一的问题是,它不适用于某些社交应用程序://

嗨,这更像是share.putExtra(Intent.EXTRA_-STREAM,Uri.parse(dir))的问题。它应该是什么来代替Uri?我似乎无法实现这一点,我尝试了share.putExtra(Intent.EXTRA_-STREAM,data)但是没有附加任何内容,数据不是空的。有什么想法吗?你是如何使用发送字节数组的意图的?据我所知,你不能只是把事情放在一个意图中,让它们自动完成。您通常会使用意图来启动另一个活动或使用它来启动服务。我想也许你应该考虑通过意图将文件附加到电子邮件或文本中,因为现在我已经睡了一觉,在阅读完你的帖子后,你似乎需要创建一个图像,在数据中使用对它的引用,并将其引用附加到意图中,然后使用startActivity。我现在不在家,所以我希望这篇文章能帮助大家展示如何做我所说的。我知道你不想保存图像,但我相信你可以找到一种方法将图像存储在内存中,并从内存中引用它。上面的链接显示了如何共享已写入SD卡的图像,因此根本不做你建议的事情。它只从你的应用程序中提取图像,希望这有帮助。但这对你用应用程序创建的新图像没有帮助。我也是这么做的,但我宁愿不使用SD卡(并请求外部存储读/写权限)。似乎有一种方法可以通过内部存储实现这一点。这个问答值得一读