0

当我在我的活动文件中单击从 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。- 覆盖公共 ParcelFileDescriptor openFile(Uri uri, String 模式)

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

4

1 回答 1

3

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

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

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

文档对如何配置它提供了非常丰富的信息。

他们还接受了名为“共享文件”的培训,提供了演练解释。

于 2016-04-06T20:34:28.663 回答