【发布时间】:2014-11-12 00:46:43
【问题描述】:
我正在制作一个制作文件的应用程序,然后我想通过电子邮件将其发送给自己。程序在我选择电子邮件管理器后一直说:“无法附加文件”。我想我可能写错了文件目录,但如果不是我已经拥有的,我不知道正确的目录是什么。
这是电子邮件按钮代码
btnEmailForm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String filelocation="data/data/CyberEye/files/form.txt"; // I think the problem is here
Intent emailIntent = new Intent(Intent.ACTION_SEND);
// set the type to 'email'
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"myemail@place.edu"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
// the attachment
emailIntent .putExtra(Intent.EXTRA_STREAM, filelocation);
// the mail subject
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "AppName");
startActivity(Intent.createChooser(emailIntent, "Send email..."));
}
});
这是我保存文件的代码
btnSaveForm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
textEventName[0] = editEventName.getText().toString();
try {
FileOutputStream fou = openFileOutput("form.txt", MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fou);
try {
osw.write(String.valueOf(textEventName));
osw.flush();
osw.close();
Toast.makeText(getBaseContext(), "Data saved", Toast.LENGTH_LONG).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
【问题讨论】:
-
您必须将文件放在(共享)外部存储上,使其他应用程序可以读取内部存储文件,或者使用内容提供程序。即使您将通常私有的内部存储文件设为世界可读,电子邮件客户端也可能假设如果不实际尝试就无法读取它,因此不鼓励这种方法。
-
有谁知道为什么这被否决了?我浏览了所有的说明。我错过了什么?
-
我可以查看@ChrisStratton 的哪些内容提供商名称或共享外部存储形式?
标签: java android email-attachments