我想通过shareIntent
分享图片。我的代码如下:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(list.get(position).getFilePath()));
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Sending from myApp");//gmail-subject
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Image 1234");//gmail-body
shareIntent.putExtra(Intent.EXTRA_TITLE, "Image 1234");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share via"));
我可以在 WhatsApp 和 Facebook 中发送图片,但不能在 Gmail 或 Instagram 中发送图片。
尝试通过 Gmail 分享时,它会显示
Can't attach file
和 Instagram 它告诉我
无法加载图片
是否需要在shareIntent
中添加其他内容?
答案 0 :(得分:1)
File file = new File(Environment.getExternalStorageDirectory() + File.separator + yourFile.getRouteFile());
if (file.exists()) {
String fileExtension = FileExtension.getFileExtension(file);
Log.d(TAG, "fileExtension: " + fileExtension);
Uri uri = Uri.parse("file://" + file.getAbsolutePath());
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, uri);
share.setType(fileExtension + "/*");
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(share, "Share file"));
}
获取文件扩展名
public static String getFileExtension(File file) {
String name = file.getName();
try {
return name.substring(name.lastIndexOf(".") + 1);
} catch (Exception e) {
return "";
}
}