android - 使用 Intent 共享时没有图像扩展名?

标签 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)?

最佳答案

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

部分原因是您的代码没有发送真实姓名或扩展名。 R.drawable.img 是一个 int,很可能是十进制的 2130837559。如果您查看正在发送的 Uri,您将看不到文件名或文件扩展名。

让 Gmail 考虑您的文件名和扩展名的唯一希望是拥有一个包含这些值的 Uri。解决方案包括:

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

  • 正在将资源复制到 internal storage 上的文件和 using FileProvider给你一个 content:// Uri

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

关于android - 使用 Intent 共享时没有图像扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580563/

相关文章:

android - 如何在双卡安卓手机中获取连接到互联网的运营商名称?

java - Android 开机接收器崩溃

java - 如何启动另一个应用程序的特定(显式) Activity

java.lang.NoClassDefFoundError : android. support.v7.mediarouter.R$string

android - 如何在ParseFacebookUtils中使用正常的Parse函数?

java - Json.getString() 上的 NullPointerException

java - Android 调用 Intent 权限

android字符串资源与应用程序大小

android 使用 localse 来改变语言

android - 参数类型 'Stream<User?>' 不能分配给参数类型 'Stream<User>?'