Android:如何覆盖ContentProvider的ParcelFileDescriptor openFile方法,通过电子邮件将文件作为附件从url发送?



我搜索了很多,但没有偶然发现我必须做的事情。所以当我点击发送电子邮件时,文件显示为附件,但我从未收到附件是否有一些特殊的方式来发送您作为URL接收的附件?这是我的活动代码:http://pastebin.com/uzdJYxab[2]这是我的项目https://docs.google.com/file/d/0B-91m-6ZevwCRTYtYXRGb3l6UVE/edit?usp=sharing"发送电子邮件"按钮的代码:sendEmail_button.setOnClickListener(新的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,字符串模式)

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

如果文件在公共目录中,则不需要内容提供程序。我是这样做的:

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

相关内容

  • 没有找到相关文章

最新更新