Android Studio、Genymotion - 发送带有 txt 文件附件的电子邮件:在 gmail 中显示,但不发送
Android Studio, Genymotion - sending email with txt file attachment: display in gmail, but doesn't send
Java,Android 工作室,Genymotion。
尊敬的同事们,
我正在从 android 应用程序发送带有 txt 附件的电子邮件(意图)。 txt 文件是由应用程序先前创建的。
在 gmail 客户端的 genymotion 中显示了这个附件(大约 1 Kb 的文件),但是真正的邮件没有附件。
代码片段:
// file creating
...
final String FILENAME = "file";
...
try {
// отрываем поток для записи
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(openFileOutput(FILENAME, MODE_PRIVATE)));
// writing any data
bw.write ("\n");
...
Log.d(LOG_TAG, "file is created");
bw.close();
}
// sending email with intent
public void sendEmailwithMailClient (){
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
// sending email
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"example@rambler.ru"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name));
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hello!");
File file = new File(getFilesDir(), FILENAME);
// if (!file.exists() || !file.canRead()) {
// return;}
Uri uri = Uri.fromFile(file);
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));
}
我是否通过 getFilesDir() 和 FILENAME 为附件正确定义了 Uri?
为什么电子邮件在发送过程中丢失附件?这是 Genymotion 的问题,或者实际上我没有在邮件中附加任何内容,在 Genymotion 中显示的附件只是假的?
提前致谢!
您无法从您的应用的私人存储中附加文件。
您需要将其保存到外部存储,然后附加。
File file = new File(getFilesDir(), FILENAME);
正在 /data/data/package_name/files
目录中创建您的文件。
这是其他应用程序无法访问的。
如果您仍想从应用程序私人存储中共享文件,您需要创建 ContentProvider
.
Java,Android 工作室,Genymotion。
尊敬的同事们,
我正在从 android 应用程序发送带有 txt 附件的电子邮件(意图)。 txt 文件是由应用程序先前创建的。 在 gmail 客户端的 genymotion 中显示了这个附件(大约 1 Kb 的文件),但是真正的邮件没有附件。
代码片段:
// file creating
...
final String FILENAME = "file";
...
try {
// отрываем поток для записи
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(openFileOutput(FILENAME, MODE_PRIVATE)));
// writing any data
bw.write ("\n");
...
Log.d(LOG_TAG, "file is created");
bw.close();
}
// sending email with intent
public void sendEmailwithMailClient (){
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
// sending email
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"example@rambler.ru"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name));
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hello!");
File file = new File(getFilesDir(), FILENAME);
// if (!file.exists() || !file.canRead()) {
// return;}
Uri uri = Uri.fromFile(file);
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));
}
我是否通过 getFilesDir() 和 FILENAME 为附件正确定义了 Uri? 为什么电子邮件在发送过程中丢失附件?这是 Genymotion 的问题,或者实际上我没有在邮件中附加任何内容,在 Genymotion 中显示的附件只是假的?
提前致谢!
您无法从您的应用的私人存储中附加文件。 您需要将其保存到外部存储,然后附加。
File file = new File(getFilesDir(), FILENAME);
正在 /data/data/package_name/files
目录中创建您的文件。
这是其他应用程序无法访问的。
如果您仍想从应用程序私人存储中共享文件,您需要创建 ContentProvider
.