图像未附加到电子邮件中

时间:2016-04-08 19:27:30

标签: android image email android-intent

我正在尝试将多个图片添加到电子邮件意图中。这是我一直在使用的代码。

    final ArrayList<Uri> uris = new ArrayList<>();

    for (int i = 0; i < form.getImageContainers().size(); i++)
        uris.add(Uri.fromFile(new File(form.getImageContainers().get(i).getImagePath())));

    final Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
            .putExtra(Intent.EXTRA_EMAIL, "pdlmob@auburn.edu")
            .putExtra(Intent.EXTRA_SUBJECT, "Sample Submission (Beta Test)")
            .putExtra(Intent.EXTRA_TEXT, Html.fromHtml(buildBody()));
            .putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

    startActivity(Intent.createChooser(emailIntent, "Send email..."));

但它没有附加任何内容,只是正文和其他所有内容。

我尝试用此行替换.putParcelableArrayListExtra来获取单个图片

    .putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(form.getImageContainers().get(0).getImagePath())));

它确实附加了图像,所以我可以告诉存储路径的字符串没有错。不幸的是,我不能遍历并只为每个图像使用该行,因为它只使用最后一行(尝试过)。我已经阅读了使用此方法的答案,以及其他使用Intent.ACTION_SEND_MULTIPLE的答案,但这给了我一个空的选择器,告诉我我没有任何可以执行此操作的应用程序。

为什么它无法正常工作?

2 个答案:

答案 0 :(得分:0)

  

我正在尝试将多个图片添加到电子邮件意图

ACTION_SEND不支持多个流。 ACTION_SEND_MULTIPLE does。因此,当ACTION_SEND应用尝试获取EXTRA_STREAM时,他们会崩溃或返回null,因为他们不会调用getParcelableArrayListExtra()或等效的,因为他们期待值为Uri,而不是ArrayListParcelable个对象。

  

我已经阅读了使用此方法的答案,以及其他使用Intent.ACTION_SEND_MULTIPLE的答案,但这给了我一个空的选择器,告诉我我没有任何可以执行该操作的应用程序。

这是因为你没有任何可以执行操作的应用程序。仅仅因为应用支持ACTION_SEND并不意味着他们必须支持ACTION_SEND_MULTIPLE

答案 1 :(得分:0)

解决方案是使用ACTION_SEND_MULTIPLEsetType("text/plain"),所以我的第一行现在看起来像

    final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE).setType("text/plain")