2010-12-14 7 views
7

は、私はプログラム的に以下のものを使用して、デフォルトの電子メールに付きエディタ、件名、およびメッセージを開くことができています:メールを終了して結果を得るのを待つ方法を教えてください。私の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); 

これは素晴らしい作品が、私はまで私のアプリで待機する必要がありますユーザは電子メール画面を終了し、電子メールが送信されたか破棄されたかも知る。

誰でもこの方法を知っていますか?

+0

'emailIntent.setType(" message/rfc822 ");'参照:[インターネットメディアの種類](http://en.wikipedia.org/wiki/Internet_media_type#Type_message)。 –

答えて

1

これは難しいことです。電子メール送信の標準的な戻り値はなく、ユーザーの設定に応じて、電子メールアプリケーション、Gmailアプリケーション、または多数の第三者電子メールアプリケーションのいずれかでメールを送信することができます。彼らは電子メールの終了を処理する方法がすべて異なる可能性が高いです。

あなたの質問には一般的にstartActivityForResult()を使用してアクティビティを開始し、終了後に処理の進行状況を示す戻り値を使用できます。しかし、私は、ほとんどの電子メールアプリケーションがあなたに適切な結果を与えないと確信しています。

私はあなた自身がメールの送信を処理する必要がある、つまりSMTPに接続してメールを送信するという単純な機能を書く必要があるかもしれないと言いたいです。私はすべての重い持ち上げを扱うライブラリがたくさんあると確信しています。

(あなたは、もちろん、startActivityForResult最初の実験することができます - 。MAYBE最も一般的な電子メールアプリがあなたの戻り値を与えるん)

+1

ええと、SMTPやJavaMailについて考えましたが、結局私のアプリはメールアプリではありません。メールはちょうど "友人に知らせる"ために使用され、ユーザがそれを完了すると自動的に閉じることを望みます。非常に小さな機能ですが、UIをよりスムーズにするでしょう。 – Nicholas

2

通常は、1サブとして第二の活動を開始startActivityForResult()を使用することができます-アクティビティ。しかし、電子メール活動の場合、これはうまく動作していないようです。おそらく、内部実装のためです。質問を投稿する前に検索してください:

how can we use startActivityforResult() for Email intent?

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

+0

はい、EboMikeは、Androidで動作するように見えるJavaMailを使用して電子メールクライアントをバイパスすることを提案しています。http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without- using-the-default-android-ap – jfelectron

+1

私は常に自然に検索しますが、その投稿は見ませんでした。良い出発点。電子メールが送信されたかどうかは気にしません。ユーザーが[送信]または[破棄]を押したかどうかだけに関心があります。私はこれを試してみるつもりだ... – Nicholas

関連する問題