如何通过电子邮件发送在 "android/data" 中创建的文件?
How to send a file created in "android/data" via Email?
我想通过电子邮件共享使用服务制作和编写的文件。我知道我不能通过电子邮件共享私人文件,但如何使用内容提供商来做到这一点。我在网上看到 content Provider 可以提供帮助,但我无法让它发挥作用。 (为了简单起见,我将文件创建代码与意图创建合并在一起)
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "someone@gmail.com"});
email.putExtra(Intent.EXTRA_SUBJECT, "Nothing");
email.putExtra(Intent.EXTRA_TEXT, "Nothing");
email.setType("message/rfc822");
Uri uri = null;
try {
File file = new File(this.getExternalFilesDir(null), "samplefile.txt");
uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider", file);
FileOutputStream osw = new FileOutputStream(file);
osw.write("Say something".getBytes("UTF-8"));
osw.close();
Log.i("File Reading stuff", "success");
} catch (Exception e)
{
Log.e(tag,"File creation error",e);
}
//Uri uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider", );
//Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt"));
Log.d(tag,uri.toString());
email.putExtra(Intent.EXTRA_STREAM,uri);
startActivityForResult(Intent.createChooser(email, "Choose an Email client :"),1);
我可以选择应用程序,但没有任何反应。 Gmail 应用程序未打开。
如果我使用 Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt"));
,Gmail 会打开,但随后我会收到 "permission denied for attachment"。
实际上,我想从服务写入文件,然后通过电子邮件发送该文件。请帮助我实现它。
使用下面的代码,
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("*/*");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"me@gmail.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Test Subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"go on read the emails");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromfile(new File(yourtextfilepath));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
确保您的文本文件路径应该来自外部存储卡。动作发送不会接受来自内部存储器的文件。
也试试这个,
我想通过电子邮件共享使用服务制作和编写的文件。我知道我不能通过电子邮件共享私人文件,但如何使用内容提供商来做到这一点。我在网上看到 content Provider 可以提供帮助,但我无法让它发挥作用。 (为了简单起见,我将文件创建代码与意图创建合并在一起)
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "someone@gmail.com"});
email.putExtra(Intent.EXTRA_SUBJECT, "Nothing");
email.putExtra(Intent.EXTRA_TEXT, "Nothing");
email.setType("message/rfc822");
Uri uri = null;
try {
File file = new File(this.getExternalFilesDir(null), "samplefile.txt");
uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider", file);
FileOutputStream osw = new FileOutputStream(file);
osw.write("Say something".getBytes("UTF-8"));
osw.close();
Log.i("File Reading stuff", "success");
} catch (Exception e)
{
Log.e(tag,"File creation error",e);
}
//Uri uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider", );
//Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt"));
Log.d(tag,uri.toString());
email.putExtra(Intent.EXTRA_STREAM,uri);
startActivityForResult(Intent.createChooser(email, "Choose an Email client :"),1);
我可以选择应用程序,但没有任何反应。 Gmail 应用程序未打开。
如果我使用 Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt"));
,Gmail 会打开,但随后我会收到 "permission denied for attachment"。
实际上,我想从服务写入文件,然后通过电子邮件发送该文件。请帮助我实现它。
使用下面的代码,
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("*/*");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"me@gmail.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"Test Subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
"go on read the emails");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromfile(new File(yourtextfilepath));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
确保您的文本文件路径应该来自外部存储卡。动作发送不会接受来自内部存储器的文件。
也试试这个,