【发布时间】:2018-12-29 20:59:20
【问题描述】:
我正在创建一个 Android 应用程序,用户可以在其中选择要共享的多个图像之一(存储在 drawable 文件夹中),并且该应用程序会打开一个标准 ACTION_SEND 选择器以允许他们将其共享到任何应用程序支持 PNG,如下所示:
Uri imageUri = Uri.parse("android.resource://com.owlswipe.imagesharer/" + getImage());
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
sendIntent.setType("image/png");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(sendIntent, "share to an app"));
public int getImage() {
return R.drawable.firstimage;
}
但是,如果用户选择将其分享给 Whatsapp,它就无法正常工作:它不会将其解释为图像(就像您通常将照片分享给 Whatsapp),它认为这是一个名为“无标题”的文档,并且不显示为图像。
在计算机上打开此无标题文档会发现它名为DOC-20180721-WA0012.,没有文件扩展名!手动在文件名末尾添加png 会显示正确的图像。
让这个更奇怪(但绝对可以以某种方式解决!):
如果用户选择在短信应用中打开图片,例如,图片会正常显示。
这种情况发生在多台设备上(P beta 上的 Pixel 2 和 7.1.1 上的 Nokia 2)
此问题不会发生在其他应用程序中,在这些应用程序中,PNG 可以像普通图像一样通过 Whatsapp 发送(尽管它们似乎确实被 Whatsapp 自动转换为 JPEG)。
我可以做些什么来确保 Whatsapp 将我的图片视为正确的 PNG 文件?或者,如何正确共享我的应用中的预加载图像,以便每个应用都能正确解释它?
【问题讨论】:
标签: java android android-studio android-intent whatsapp