android - 如何使用默认的 Android 电子邮件应用程序发送带附件的电子邮件 - Delphi RIO
问题描述
你好 StackOverflow 的团队,
使用 Delphi Rio,我有一个 Android 应用程序,我想发送一封带有附加 zip 文件的电子邮件。
关于以下链接,我可以使用 Delphi Tokyo(设备 6.0、8.0 和 8.1)执行此操作,但不适用于 Rio:该应用程序在 8.0 + 8.1 设备关闭时没有任何消息错误。它适用于我的 6.0 设备。
如何使用默认的 Android 电子邮件应用程序发送带附件的电子邮件 - Delphi XE7
在调用 CreateEmail 过程之前已创建 Zip 文件。
此链接stackoverflow.com/a/53605468/3164070确实帮助了我,但现在我有 2 个目标地址:
- _可以的收件人
- //com.embarcadero.MyApp.fileprovider/external_files/MyApp/Tmpdir/TmpFile.zip 这是错误的......
如何删除错误的地址?
这是我的程序:
procedure CreateEmailTest(const _Recipient, _Subject, _Content, _Attachment: string);
var LIntent: JIntent;
LAuthority: JString;
LUri: Jnet_Uri;
JRecipient: TJavaObjectArray<JString>;
begin
LAuthority := StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName) + '.fileprovider');
LUri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, LAuthority, TJFile.JavaClass.init(StringToJString(_Attachment)));
LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);
JRecipient := TJavaObjectArray<JString>.Create(1);
JRecipient.Items[0] := StringToJString(_Recipient);
LIntent.removeExtra(StringToJString(_Attachment));//do not remove wrong email adress
LIntent.removeExtra(TJIntent.JavaClass.EXTRA_EMAIL) ;//do not remove wrong email adress
LIntent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, JRecipient);
LIntent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(_Subject));
LIntent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(_Content));
LIntent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((LUri as ILocalObject).GetObjectID)); // ajout de la pièce jointe
LIntent.setDataAndType(LUri, StringToJString('vnd.android.cursor.dir/email'));
TAndroidHelper.Activity.startActivity(LIntent);
end;
问候,
乐福卡布罗
解决方案
推荐阅读
- python - Euler 214 项目的效率问题 - Totient 链
- vue.js - 为什么在 DOM 中添加了一些 JS 注释而不是 Vue 组件?
- javascript - 在 youtube iframe 的“节点”上反应“removeChild”
- sql - Data Factory New Linked Service 连接失败 ACL 和防火墙规则
- python - 使用 if else 使用 pandas 操作数据框时出现值错误?
- xml - 获取错误属性 xsi:noNamespaceschemaLocation 是不允许的
- c++ - 简单友好的 Heapsort 时间和空间复杂度分析
- java - 如何在 kotlin 中使用标头获取请求?
- ios - 消息工具包控制每个图像显示在哪一侧
- javascript - Javascript map,reduce在对象方法中实现时不起作用