【问题标题】:returnActivity events when calling startActivity method调用 startActivity 方法时的 returnActivity 事件
【发布时间】:2016-11-25 18:11:35
【问题描述】:

我有一个Activity,我用startActivity 启动一个应用程序选择器。

问题:如何在完成父活动后等待用户选择首选邮件应用程序?

 Uri uri = Uri.parse("mailto:" + "someone@mail.com")
                .buildUpon()
                .appendQueryParameter("subject", "subject")
                .appendQueryParameter("body", "body")
                .build();

 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
 startActivity(Intent.createChooser(emailIntent, "chooser Title"));

 finish();

【问题讨论】:

  • 没有回调。

标签: android android-intent android-activity


【解决方案1】:

in this post 所述,您可以使用 IntentPicker 代替 IntentChooser

Intent intentPick = new Intent();
intentPick.setAction(Intent.ACTION_PICK_ACTIVITY);
intentPick.putExtra(Intent.EXTRA_TITLE, "Launch using");
intentPick.putExtra(Intent.EXTRA_INTENT, emailIntent);
this.startActivityForResult(intentPick, REQUEST_CODE_MY_PICK);
// You have just started a picker activity, 

然后您可以通过在您的活动中添加以下回调方法来监听意图选择的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == REQUEST_CODE_MY_PICK) {
         // start the activity the user picked from the list
         startActivity(data);

         //you can finish() your activity here
    }
}

【讨论】:

  • 如何避免 onActivityResult 的问题:“此处不允许注释”?
  • 我猜你在错误的地方添加了 onActivityResult,例如在另一个方法中。它应该直接在您的活动类中
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2011-07-02
  • 1970-01-01
相关资源
最近更新 更多