在android中分享来自drawable的图片

时间:2014-06-30 07:05:40

标签: android share drawable

我希望在我的程序中分享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。 当我选择与电子邮件共享,附加成功但发送文件没有任何扩展。 我错了什么?

4 个答案:

答案 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也是私人的。您必须先将它们复制到外部应用可以覆盖的地方。他们。以外部存储器为例。