我想仅将文件作为附件与用户设备上安装的电子邮件客户端共享。为此,我使用以下代码:
String tmp = "file://" + commonMethods.getFromPreferences(Constants.fileNameKey, "string");
Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto:"));
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.shareEmailSubject));
emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.shareEmailText));
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(tmp));
((Activity) getContext()).startActivityForResult(emailIntent, 1);
使用上面的代码,如果我与GMail
应用程序共享该文件,它可以正常工作。但是,如果我与Inbox
或Outlook
应用程序共享它们,则该文件不会作为附件添加。
我有什么遗漏或需要做的事吗?
答案 0 :(得分:1)
如果您阅读the documentation,则ACTION_SENDTO
不会收取额外费用。任何应用程序都不需要尊重任何这些额外内容,更不用说所有附加内容了。
除此之外:
FLAG_GRANT_READ_URI_PERMISSION
适用于content:
Uri
个值,而不适用于file:
Uri
个值。
其他应用可能无法读取存储此文件的位置(例如,外部存储空间)。
ACTION_SENDTO
mailto:
的 Uri
不会将您限制为用户设备上安装的电子邮件客户端&#34;。任何应用都可以实施具有匹配<intent-filter>
。