我搜索了很多,但没有偶然发现我必须做的事情。所以当我点击发送电子邮件时,文件显示为附件,但我从未收到附件是否有一些特殊的方式来发送您作为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"));
}