0

私は現在、SMSと電子メールを送信できるアプリケーションを開発しています。大したことではありません、それはとても簡単です。SMSの送信方法は次のとおりです。

private void sendSms() {
    Log.i("", "SEND SMS");
    Intent intent = new Intent(Intent.ACTION_VIEW, 
            Uri.parse("sms:123456789"));
    intent.putExtra("sms_body", "My message");
    startActivity( intent );
}

メールを送信するための私のコードは次のとおりです。

private void sendEmail() {
    Log.i("", "SEND");
    Intent email = new Intent(Intent.ACTION_SEND);
    email.putExtra(Intent.EXTRA_EMAIL, "address@fuu.com");
    email.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    email.putExtra(Intent.EXTRA_TEXT, "My body email");
    email.setType("message/rfc822");
    startActivity(Intent.createChooser(email, "Send an email:"));
}

独立して、それらはうまく機能します。

しかし、SMSが送信またはキャンセルされたら、メールを送信したいと思います。SMS intent/activityメールを送信するためにのクローズイベントを取り戻す方法がわかりません。何か案が ?

4

1 に答える 1

2

この種のアクティビティを開始するときは、 startActivityForResultを使用する必要があります。

次に、 onActivityResultメソッドを実装することにより、開始されたアクティビティの結果を取得できます。

フローは次のようになります

1)startActivityForResult(SEND_SMS_INTENT、SEND_SMS_REQUEST_CODE)ここで、SEND_SMS_REQUEST_CODEはユーザーが定義した整数定数です。

2)SMS送信アクティビティの終了(キャンセルされたか、そのジョブで完了)

3)onActivityResultは、SEND_SMS_REQUEST_CODEを使用してホストアクティビティで呼び出されます。

4)次に、if(requestCode == SEND_SMS_REQUEST_CODE)sendEmail();を実行できます。

メール送信アクティビティについても同じことができます。

子アクティビティの結果が何であるかを知りたい場合(つまり、SMSの送信がキャンセルされたか、実際に送信された場合)、onActivityResultresultCodeパラメーターを使用できます。

于 2012-11-16T15:17:43.893 に答える