无法在Gmail和Instagram中共享图片

时间:2017-08-25 09:21:20

标签: android share-intent

我想通过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中添加其他内容?

1 个答案:

答案 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 "";
        }
    }