1

デフォルトの電子メール エンジンを使用して Delphi アプリケーションから電子メールを送信するためのこのコードを見つけました

Procedure SendEmail(Const eAddress, eObject, eText, eAttach : String);
var
  Intent : JIntent;
  D, S   : JString;
Begin
  Intent := TJIntent.Create;

  Intent.setAction(TJIntent.JavaClass.ACTION_Send);
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, StringToJString(eAddress));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(eObject));
  intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(eText));

  Intent.setType(StringToJString('vnd.android.cursor.dir/email'));

  SharedActivity.startActivity(Intent);
End;

問題は添付ファイルにあります。元のサンプル コードには、次のような構成があります。

Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,
                TJnet_Uri.JavaClass.fromFile(FileName));

ただし、FileName は JFile でなければなりません。

String を JFile に変換するにはどうすればよいですか? または、ファイル名を関数に渡す添付ファイル付きの電子メールを送信するにはどうすればよいですか?

4

2 に答える 2

3

クラスのparseメソッドを使用できます。URIそのようです

Uri:=TJnet_Uri.JavaClass.parse(StringToJString(FileName));
Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, Uri);

コードは次のようになります

var
  Intent : JIntent;
  D, S   : JString;
  Uri    : TJnet_Uri;
Begin
  Intent := TJIntent.Create;

  Intent.setAction(TJIntent.JavaClass.ACTION_Send);
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, StringToJString(eAddress));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(eObject));
  intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(eText));
  Uri:=TJnet_Uri.JavaClass.parse(StringToJString(FileName));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, Uri);
  Intent.setType(StringToJString('vnd.android.cursor.dir/email'));
  SharedActivity.startActivity(Intent);
End;
于 2013-10-04T17:19:40.317 に答える