【问题标题】:Android: how to use content provider to attach file from url to email intentAndroid:如何使用内容提供者将文件从 url 附加到电子邮件意图
【发布时间】:2013-08-01 15:12:43
【问题描述】:

当我在我的活动文件中单击发送电子邮件时,从 url 显示为附件,但从未收到文件,只有电子邮件正文和主题。

 @Override
                public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
                        intent.setType("*/*");
                        intent.putExtra(Intent.EXTRA_SUBJECT, "Attachment from app");
                        intent.putExtra(Intent.EXTRA_TEXT, "Sending mp3 file " + title);

                        intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"some_email@email.com"});
                        ArrayList<Uri> uris = new ArrayList<Uri>();

                        uris.add(Uri.fromFile(new File(trackUrl)));

                        intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

                        startActivity(Intent.createChooser(intent, "Send mail"));
                }
        });    

这是我的项目https://docs.google.com/file/d/0B-91m-6ZevwCRTYtYXRGb3l6UVE/edit?usp=sharing,这是我的活动代码:http://pastebin.com/uzdJYxab。我收到的任务表明

ACTION_SEND_MULTIPLE 将使用应该访问声音文件的外部活动。要允许此类访问,您需要: - 创建 ContentProvider。 - 覆盖 public ParcelFileDescriptor openFile(Uri uri, String mode)

然而,关于如何使用内容提供者的信息很少甚至没有,它的方法是 ParcelFileDescriptor openFile(Uri uri, String mode) 以便将来自 url 的文件作为电子邮件附件附加。至少有人能指出我正确的方向吗?

【问题讨论】:

  • 您需要确保您的 uri 前面有“file://”。
  • 我刚刚检查了 logcat,我得到了:file:///http%3A/wbads.vo.llnwd.net/o25/u/wbdd/vapp/thedarkknight/soundboard/German/TDK_Joker_here_we_go_GER.mp3 %20,所以我猜它被正确解析了但是文件从来没有作为附件接收到

标签: android email attachment provider


【解决方案1】:

我知道这已经很老了,但是如果其他人偶然发现了这个问题:

"file://" URI 可能不起作用,具体取决于其他应用程序是否有权访问特定文件。如果您引用的是 MODE_PRIVATE 的文件(并且 MODE_WORLD_READABLE 在 API 17 中已弃用),则它不太可能工作。

Google 在其 v4 支持库中提供了 FileProvider

documentation 提供了很多关于如何配置它的信息。

他们还接受了名为 Sharing Files 的培训,提供演练解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多