java - 无法使用 Intent.ACTION_SEND_MULTIPLE 找到工作解决方案以将多个图像附加到电子邮件中

标签 java android android-intent email-attachments

情况是这样的 - 我正在开发一个具有原生 Android 功能的 Unreal 插件。 对单个图像的 Intent 工作得很好,但现在,当我尝试使用 ACTION_SEND_MULTIPLE 添加多个图像附件时,它没有启动 Activity 。

没有错误,执行在 .startActivity() 上停止,使用 try-catch 包装不会返回任何异常,Unreal 传递图像数组没有任何问题。 我觉得它没有正确建立 Intent ,但经过 2 天的搜索和无数小时的尝试和错误,我觉得是时候放弃并在这里寻求建议了:)

这是我怀疑代码的 java 部分不起作用:

public static void sendEMail(Activity activity, String subject, String[] extraImagePaths,
                         String[] recipients, String[] cc, String[] bcc,
                         boolean withChooser, String chooserTitle) {
    Intent intent = createEMailIntent(subject, recipients, cc, bcc);
    ArrayList<Uri> paths = new ArrayList<Uri>();

    if (extraImagePaths.length > 0) {
        for (String extraImagePath : extraImagePaths) {
            File fileIn = new File(extraImagePath);
            Uri arrayPath = Uri.fromFile(fileIn);
            paths.add(arrayPath);
        }
    }

    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, paths);

    try {
        launchShareIntent(activity, withChooser, chooserTitle, intent);
    } catch (Exception e) {
        Log.d("AndroidLOG:", e.getMessage());
    }
}

private static Intent createEMailIntent(String subject, String[] recipients, String[] cc, String[] bcc) {

    return new Intent(Intent.ACTION_SEND_MULTIPLE)
    .setData(Uri.parse("mailto:"))
    .setType("image/*")
    .putExtra(Intent.EXTRA_SUBJECT, subject)
    .putExtra(Intent.EXTRA_EMAIL, recipients)
    .putExtra(Intent.EXTRA_CC, cc)
    .putExtra(Intent.EXTRA_BCC, bcc);
}

private static void launchShareIntent(Activity activity, boolean withChooser, String chooserTitle, Intent intent) {
    if (withChooser) {
        Intent chooserIntent = Intent.createChooser(intent, chooserTitle);
        activity.startActivity(chooserIntent);
    } else {
        activity.startActivity(intent);
    }
}

尝试删除除图像之外的所有额外内容,但这并没有解决问题。

非常感谢您的帮助!

最佳答案

经过更多挖掘后发现类似的帖子,将 .fromFile() 更改为 FileProvider ,它的工作就像一个魅力。

fragment :

for (String extraImagePath : extraImagePaths) {
            Uri arrayPath = FileProvider.getUriForFile(activity, getAuthority(activity), new File(extraImagePath));
            paths.add(arrayPath);
        }

附注信用归CommonsWare !

关于java - 无法使用 Intent.ACTION_SEND_MULTIPLE 找到工作解决方案以将多个图像附加到电子邮件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59770815/

相关文章:

android - 组织 FragmentActivity 导航栈

java - DecimalFormat 没有分组分隔符

java - 将数据从 Oracle 存储过程传递到 Java

java - 为什么标点符号采用 UTF 8 编码,而英文字符则不编码?

java - 将模型类添加到通用列表会引发错误

java - 组织 AsyncTask 的最佳方式

java - Visual Studio 2015 中 Visual C++ 开发中的 Jar 依赖项

android - 发送电子邮件 Intent 选择器

java - 安卓菜单和子菜单

android - 无法获取相机预览(调用相机),HTC Thunderbolt