【问题标题】:How to return to activity after sending a mail in android?在android中发送邮件后如何返回活动?
【发布时间】:2015-05-20 22:35:48
【问题描述】:

一切正常,邮件也正常发送。但发送邮件后我无法返回活动。

当前屏幕历史记录是错误的。我也使用了带有结果代码的启动 Activity。但无法做到。

能否提供一些指导或提供一些示例代码,这对我非常有用

bookByMail.setOnClickListener(new View.OnClickListener() {// sending mail details
                @Override
                public void onClick(View v) {                   
                    String mailId ="deepakmeccse26@gmail.com";
                      String sms = messageSummary.getText().toString();
                      String subject="Bottle Order";
                      Intent email = new Intent();
                      email.putExtra(Intent.EXTRA_EMAIL,new String[]{"bbbb@gmail.com","aaa@gmail.com"});
                      email.putExtra(Intent.EXTRA_CC, new String[]{"xxxx@gmail.com"});
                      email.putExtra(Intent.EXTRA_BCC, new String[]{"xxx@gmail.com"});
                      email.putExtra(Intent.EXTRA_SUBJECT, subject);
                      email.putExtra(Intent.EXTRA_TEXT, sms);           
                      email.setType("sms/rfc822");   
                      //email.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);                
                     startActivity(Intent.createChooser(email, "Choose an Email client :"));                                      
                                }                                           
            });         
    dialog.show();
    }   
        });
        }

【问题讨论】:

  • 在将您的意图发送到其他应用程序后,您无法返回您的应用程序.. 使用 smtp 自己构建您的发送电子邮件代码
  • 好的,会尝试让您知道。谢谢
  • 你看到我的回答了吗?你在哪里接触到这个?

标签: android email android-activity start-activity


【解决方案1】:

使用startActivityForResult() 代替startActivity()。这将在Intent 操作完成后返回到起始Activity。有关示例,请参阅 Getting a Result from an Activity 帖子。

【讨论】:

  • 我也用过,能否提供StartActivityForResult()的示例代码。我也在找。
  • @Deepak:你看到发布的链接了吗?它有一个例子。
【解决方案2】:

在这种情况下,你应该使用startActivityForResult()方法。

此方法启动一个新活动并等待结果代码 新活动退出时来自新活动

你需要做一些改变,比如:

bookByMail.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {                   
        String mailId ="deepakmeccse26@gmail.com";
        String sms = messageSummary.getText().toString();
        String subject="Bottle Order";
        Intent email = new Intent();
        email.putExtra(Intent.EXTRA_EMAIL,new String[]{"bbbb@gmail.com","aaa@gmail.com"});
        email.putExtra(Intent.EXTRA_CC, new String[]{"xxxx@gmail.com"});
        email.putExtra(Intent.EXTRA_BCC, new String[]{"xxx@gmail.com"});
        email.putExtra(Intent.EXTRA_SUBJECT, subject);
        email.putExtra(Intent.EXTRA_TEXT, sms);           
        email.setType("sms/rfc822");   
        startActivityForResult(Intent.createChooser(email, "Choose an Email client :"), 800);                                      
    }                                           
});         

并通过覆盖 onActivityResult() 方法等待响应:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 800) {
        //Called when returning from your email intent
    }
}

【讨论】:

    【解决方案3】:

    在我的测试中,下面的代码会启动一个电子邮件客户端并开始撰写电子邮件。当我单击发送或放弃时,我会自动返回到执行代码以启动电子邮件客户端的活动。请注意,代码使用startActivity() 而不是startActivityForResult()

    使用此代码的作用是返回使用向上导航(单击操作栏左侧的箭头)启动电子邮件客户端的活动。并且使用 startActivityForResult() 而不是 startActivity() 没有任何区别。

    public void onClickSendEmail(View unused) {
        String body = "App Version Code: " + BuildConfig.VERSION_CODE;
        body += "\nApp Version Name: " + BuildConfig.VERSION_NAME;
        body += "\nOS API Level: " + android.os.Build.VERSION.SDK_INT;
        body += "\nDevice: " + android.os.Build.DEVICE;
        body += "\nModel: " + android.os.Build.MODEL;
        body += "\nProduct: " + android.os.Build.PRODUCT;
    
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("plain/text");
        intent.putExtra(Intent.EXTRA_EMAIL, new String[] { getString(R.string.roamfree_email_addess) });
        String userId = "fakeid";
        intent.putExtra(Intent.EXTRA_SUBJECT, "RoamFree Feedback: User Id " + userId);
        intent.putExtra(Intent.EXTRA_TEXT, body);
        startActivity(Intent.createChooser(intent, "Choose Email Client:"));
    }
    

    【讨论】:

      【解决方案4】:

      Activity 内部 onCreate 方法

          btn_save.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  String isim = innerName.getText().toString();
                  String yurtIsmi = innerYurtName.getText().toString();
                  String telNo = innerTelNo.getText().toString();
                  String message = " ";
                  String messageTitle = isim + " Hello ";
                  String messageBody = isim + " " + yurtIsmi + "\n" + " " + ulke_sehir + "\n" + " " + telNo + "\n" + " " + message;
                  try {
                      Intent i = new Intent(Intent.ACTION_SEND);
                      i.setType("message/rfc822");
                      i.putExtra(Intent.EXTRA_EMAIL, new String[]{"samir@gmail.com"});
                      i.putExtra(Intent.EXTRA_SUBJECT, messageTitle);
                      i.putExtra(Intent.EXTRA_TEXT, messageBody);
                      // startActivity(Intent.createChooser(i, "Send mail..."));
                      startActivityForResult(Intent.createChooser(i, "Choose an Email client :"),0);
                  } catch (android.content.ActivityNotFoundException ex) {
                      Toast.makeText(KayitAct.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
                  }
              }
          });
      

      在同一活动中接收结果

          @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
      
          String sam = "";
          if (requestCode  == 0) { // Activity.RESULT_OK
              Toast.makeText(KayitAct.this, "Kayıt Talebiniz Tarfımıza İletildi \nEn Kısa Sürede Dönüş Yapılacaktır", Toast.LENGTH_LONG).show();
              Intent intentGoToMenu = new Intent(KayitAct.this, LoginActivity.class);
              startActivity(intentGoToMenu);
              overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
              finish();
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-30
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 2018-12-25
        • 2015-11-22
        • 1970-01-01
        • 2014-07-16
        相关资源
        最近更新 更多