我希望在我的程序中分享res / drawable文件夹中的一些图像。 这是我的代码:
String _ImageFile = "android.resource://" + getResources().getResourceName(R.id.mypic).replace(":", "/");
Uri imageUri = Uri.parse(_ImageFile);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(intent, "Share"));
它与Instagram合作但不适用于Email或Viber。 当我选择与电子邮件共享,附加成功但发送文件没有任何扩展。 我错了什么?
答案 0 :(得分:3)
在您的编码中替换此行
intent.setType("image/*");
而不是
intent.setType("image/jpeg");
答案 1 :(得分:0)
尝试 -
String _ImageFile = "android.resource://" + getResources().
getResourceName(resID).replace(":", "/");
Uri imageUri = Uri.parse(_ImageFile);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(intent, "Share"));
对于Viber -
String _ImageFile = "android.resource://" + getResources().
getResourceName(resID).replace(":", "/");
Uri imageUri = Uri.parse(_ImageFile);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.setPackage("com.viber.voip");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(intent, "Share"));
<强>更新强>
要获取可绘制图像的图像URI,请执行以下操作 -
Uri uri = Uri.parse("android.resource://your package name/"
+R.drawable.image_name);
intent.putExtra(Intent.EXTRA_STREAM, uri);
答案 2 :(得分:0)
请参阅documentation并注意这一点:
注意:某些电子邮件应用程序(如Gmail)需要使用String []来添加额外内容,例如EXTRA_EMAIL和EXTRA_CC,请使用putExtra(String,String [])将这些添加到您的意图中。
所以,例如添加这样的附加内容:
intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”);
并考虑目标应用程序所期望的额外内容。
答案 3 :(得分:0)
其他应用程序无法在内部存储器中查看/读取/写入您的私人文件。 &#39;文件&#39;来自res / drawable也是私人的。您必须先将它们复制到外部应用可以覆盖的地方。他们。以外部存储器为例。