0

我搜索了很多,但没有偶然发现我必须做的事情。因此,当我单击发送电子邮件时,文件显示为附件,但我从未收到附件 是否有一些特殊的方法可以发送作为 URL 接收的附件?这是我的活动代码:http://pastebin.com/uzdJYxab[2] 这是我的项目https://docs.google.com/file/d/0B-91m-6ZevwCRTYtYXRGb3l6UVE/edit?usp=sharing 代码“发送电子邮件”按钮:sendEmail_button.setOnClickListener(new OnClickListener() {

                    @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"));
                    }
            });    

也许必须有其他方法将音频文件从 URL 放到意图?我必须使用 intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uri); 作为我任务的一部分。但是我跳过了另一部分

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

这是否意味着只有使用内容提供商才能从 url 获取文件并将其作为电子邮件附件放置?我用谷歌搜索但没有找到如何正确覆盖公共 ParcelFileDescriptor openFile(Uri uri, String mode),也许有人至少会指出我正确的方向?同样,我不是要解决这个问题,但至少指出我的错误并给出一些建议。

4

1 回答 1

0

如果文件位于公共目录中,则不需要内容提供者。我这样做:

private void launchShareActivity(final List<String> exported_filenames) {
    Log.v(DEBUG_TAG, "launchShareActivity");
    final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("*/*");
    if (exported_filenames.size() == 0) {
        Log.i(DEBUG_TAG, "there no file to share");
        return;
    }
    final ArrayList<Uri> uris = new ArrayList<Uri>();
    for (final String exported_file : exported_filenames) {
        final File f = new File(exported_file);
        uris.add(Uri.fromFile(f));
    }
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
    activity.startActivity(Intent.createChooser(intent, "Send page"));
}
于 2013-07-31T20:53:16.303 回答