使用意图共享时没有图像扩展名?

时间:2015-04-11 17:00:00

标签: android android-intent android-resources

我使用以下代码来共享图像:

 Uri imguri=Uri.parse("android.resource://PackageName/drawable/"+ R.drawable.img);
 Intent intent=new Intent(Intent.ACTION_SEND);
 intent.setType("image/png");
 intent.putExtra(Intent.EXTRA_STREAM,imguri);
 Intent ch=Intent.createChooser(intent,"Send image");
 startActivity(ch);

发送文件(例如使用GMAIL),但问题是没有扩展名。它简称为2130837559。

有没有办法获得真实姓名(img)和扩展名(png)?

2 个答案:

答案 0 :(得分:1)

部分地,这取决于电子邮件客户端,而不是您。

部分原因是因为您的代码未发送真实姓名或扩展名。 R.drawable.imgint,很可能是十进制的2130837559。如果您查看要发送的Uri,则不会看到文件名或文件扩展名。

让Gmail根据您的文件名和扩展名进行思考的唯一希望就是拥有一个Uri,其中包含这些值。解决方案包括:

  • 将资源复制到external storage上的文件并使用file:// Uri(不推荐)

  • 将资源复制到internal storageusing FileProvider上的文件,以便为您提供content:// Uri

  • 使用my StreamProvider直接从原始资源中提供值,并设置name以便为生成的Uri提供文件名和扩展名(注意:这需要您将PNG文件作为原始资源,而不是作为可绘制资源)

答案 1 :(得分:0)

您需要做的是更改" R.drawable.img" 在你的" imguri" to" getResources()。getResourceEntryName(R.drawable.img)"。