9

私の Android アプリでは、以下を使用して、宛先、件名、およびメッセージを含む既定の電子メール エディターをプログラムで開くことができます。

Intent emailIntent=new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, toemail);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
emailIntent.setType("text/plain");
emailIntent.setClassName("com.android.email", "com.android.email.activity.MessageCompose");
startActivity(emailIntent);

これはうまく機能しますが、ユーザーがメール画面で終了するまでアプリで待機し、メールが送信されたか破棄されたかを知る必要があります。

誰でもこれを行う方法を知っていますか?

4

2 に答える 2

2

通常、サブアクティビティとして 2 番目のアクティビティを開始する startActivityForResult() を使用できます。ただし、電子メール アクティビティの場合、おそらく内部実装が原因で、これは機能していないようです。質問を投稿する前に検索してみてください。

メール インテントに startActivityforResult() を使用するにはどうすればよいですか?

電子メールの実際の送信は設計上非同期であるため、電子メールが実際に送信される前にアクティビティが返される可能性があります。このケースを具体的にテストしていませんが、上記のリンクから、ユーザーが送信ボタンを押すとアクティビティが返されるようです。あなたのユースケースでこれで十分な場合は、スーパーです。メールが実際に送信されたかどうかを知る必要がある場合は、SOL である可能性があります。

于 2010-12-14T19:24:59.660 に答える
1

これはトリッキーになるでしょう。メール送信の標準化された戻り値はありません。ユーザーの設定によっては、メール アプリ、Gmail アプリ、または多くのサード パーティのメール アプリのいずれかでメールを送信できます。ほとんどの場合、メールの末尾を処理する方法がすべて異なります。

一般的な質問に関しては、 を使用startActivityForResult()してアクティビティを開始し、終了後に続行し、戻り値がどのように進んだかを示すことができます。ただし、ほとんどのメール アプリでは適切な結果が得られないことは確かです。

電子メールの送信を自分で処理する必要があるかもしれない、つまり、SMTP に接続してメールを送信する単純な関数を作成する必要があるかもしれないと言いたくなりました。すべての面倒な作業を処理するライブラリがたくさんあると確信しています。

(もちろん、startActivityForResult最初に実験することもできます。最も一般的な電子メール アプリでは、戻り値が得られる可能性があります。)

于 2010-12-14T19:19:29.440 に答える