如何使用默认的Android电子邮件应用发送带有附件的电子邮件-Delphi RIO

时间:2019-01-08 10:08:20

标签: android delphi

你好StackOverflow的团队,

使用Delphi Rio,我有一个Android应用程序,我想发送带有附件zip文件的电子邮件。

关于以下链接,我可以使用Delphi Tokyo(设备6.0、8.0和8.1)来执行此操作,但不能与Rio一起使用:该应用程序在8.0 + 8.1设备上关闭,没有任何消息错误。它可以在我的6.0设备上使用。

How to send email with attachment using default Android email app - Delphi XE7

在调用CreateEmail过程之前已经创建了压缩文件。

此链接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;

此致

利福卡布罗

0 个答案:

没有答案