【发布时间】:2017-08-06 23:48:33
【问题描述】:
在我的应用程序中,我可以在内部或外部存储中写入和读取文件。两者都适用于阅读/写作。但是,我无法将任何地方的文件附加到我导致从我的应用程序发送(通过意图)的电子邮件中。
我已经在应用程序的清单和运行时请求了外部存储权限,并且我已经验证我拥有它们(再次,我能够从我的应用程序中读取/写入。)事实上一切似乎正在工作。我的电子邮件客户端以正确填充的主题和电子邮件正文启动,它显示我的文件已附加(我通过正确的文件名和所有内容获得回形针图标。)但是,当电子邮件发送时,附件被删除。
恐怕这可能只是 Google/Android 拒绝真正允许我将附件从一个应用程序传递到另一个应用程序。
有人可以帮忙吗?
这是我设置电子邮件附件的代码:
String[] TO = {"myemail@gmail.com"};
String[] CC = {""};
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setData(Uri.parse("mailto:"));
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
emailIntent.putExtra(Intent.EXTRA_CC, CC);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Something cool");
File attachment = new File(root, "TestFile2.txt");
Uri fileUri;
if (!attachment.exists() || !attachment.canRead()) {
Log.d("MyMessages", "Could not find file to attach.");
} else {
fileUri = Uri.parse("file://" + attachment.getAbsolutePath());
emailIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Log.d("MyMessages", "I think I attached a file...");
}
emailIntent.putExtra(Intent.EXTRA_TEXT, "Here you go...\n");
try {
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
finish();
Log.d("MyMessages", "Email sent.");
} catch (android.content.ActivityNotFoundException ex) {
Log.d("MyMessages", "Email not sent. Client installed?");
}
【问题讨论】:
标签: android android-studio android-intent wear-os