分享来自 android 个应用的图片
Sharing image from android app
我正在尝试从我的 Android 应用中分享一张图片。我正在尝试将其作为电子邮件附件以及 WhatsApp 上的照片发送。
密码是:
String imageUrl = Path to image (eg. sdcard/pictures/image1.jpg);
shareImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uriToImage= Uri.parse(imageUrl);
Log.d("Image", ""+uriToImage);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share image:"));
}
});
发生的事情是:
- 在 WhatsApp 上我可以轻松分享图片。
- 在 Gmail 上,提示无法发送附件。
- 在 Hangouts 上,我得到一个祝酒词,上面写着
Photo couldn't be found
- 在 Facebook 上也是如此,post 没有随附图片,但我可以 post。
- 在 Facebook Messenger 上,它没有打开就崩溃了。
给出了我为此遵循的教程 here。本教程的 send binary content
部分是我实现的部分。
我尝试的另一件事是将图像设置为 ImageView
并查看它是否显示。图像显示正确。此外,日志消息打印出图像的正确路径。
我也阅读并尝试了以下问题的答案:Question 1 and Question 2 但无济于事。
我哪里错了?
试试这个,
try
{
File myFile = new File(share_image_path);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = myFile.getName().substring(myFile.getName().lastIndexOf(".") + 1);
String type = mime.getMimeTypeFromExtension(ext);
Intent sharingIntent = new Intent("android.intent.action.SEND");
sharingIntent.setType(type);
sharingIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(myFile));
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
catch (Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
是的,@CommonsWare 的答案是正确的,您错过了 Intent.putExtra() 中的架构,这就是它无法在其他社交媒体平台上读取您的图片的原因
这是我的解决方案
Uri fileUri = Uri.fromFile(new File(imagePath));
//No need to do mimeType work or ext
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
intent.setType("image/*");
startActivity(Intent.createChooser(intent, "Share Image:"));
顺便说一句,它适用于所有提到的平台
Uri image_uri = Uri.parse("file://"+imagePath);
另一种创建 Uri 并将其传递给 intent 的方法
我正在尝试从我的 Android 应用中分享一张图片。我正在尝试将其作为电子邮件附件以及 WhatsApp 上的照片发送。
密码是:
String imageUrl = Path to image (eg. sdcard/pictures/image1.jpg);
shareImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uriToImage= Uri.parse(imageUrl);
Log.d("Image", ""+uriToImage);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share image:"));
}
});
发生的事情是:
- 在 WhatsApp 上我可以轻松分享图片。
- 在 Gmail 上,提示无法发送附件。
- 在 Hangouts 上,我得到一个祝酒词,上面写着
Photo couldn't be found
- 在 Facebook 上也是如此,post 没有随附图片,但我可以 post。
- 在 Facebook Messenger 上,它没有打开就崩溃了。
给出了我为此遵循的教程 here。本教程的 send binary content
部分是我实现的部分。
我尝试的另一件事是将图像设置为 ImageView
并查看它是否显示。图像显示正确。此外,日志消息打印出图像的正确路径。
我也阅读并尝试了以下问题的答案:Question 1 and Question 2 但无济于事。
我哪里错了?
试试这个,
try
{
File myFile = new File(share_image_path);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = myFile.getName().substring(myFile.getName().lastIndexOf(".") + 1);
String type = mime.getMimeTypeFromExtension(ext);
Intent sharingIntent = new Intent("android.intent.action.SEND");
sharingIntent.setType(type);
sharingIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(myFile));
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
catch (Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
是的,@CommonsWare 的答案是正确的,您错过了 Intent.putExtra() 中的架构,这就是它无法在其他社交媒体平台上读取您的图片的原因 这是我的解决方案
Uri fileUri = Uri.fromFile(new File(imagePath));
//No need to do mimeType work or ext
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
intent.setType("image/*");
startActivity(Intent.createChooser(intent, "Share Image:"));
顺便说一句,它适用于所有提到的平台
Uri image_uri = Uri.parse("file://"+imagePath);
另一种创建 Uri 并将其传递给 intent 的方法