【问题标题】:Return to Activity after action completed in Android?在Android中完成操作后返回活动?
【发布时间】:2010-07-30 21:42:03
【问题描述】:

当我使用以下方法启动 SMS 应用程序时,一切正常,直到发送消息为止。当我发送消息时——除非我按下返回按钮,否则它永远不会导航回原始活动。如何启动 SMS 活动,然后在发送消息后再次显示父活动?

这就是我调用短信应用程序的方式。

String message = getMessageString();
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
    sendIntent.setData(Uri.parse("sms:" + number));
    sendIntent.putExtra("sms_body", message);
    startActivityForResult(sendIntent, INVITE_COMPLETED);

【问题讨论】:

    标签: android sms


    【解决方案1】:

    这是可能的。只需在您的意图中添加以下额外内容:

    sendIntent.putExtra("exit_on_sent", true);
    

    【讨论】:

    • 不调用onActivityResult,而是返回调用者应用。
    • 这似乎使 sms_body 字段为空。有什么办法处理吗?
    【解决方案2】:

    一旦您启动的活动完成,您的第一个活动中的 onActivityResult() 方法就会被调用。这就是为什么您应该在第一个活动中覆盖 onActivityResult() 并在那里处理已完成的活动。

    【讨论】:

    • 我这样做了——但是在发送 SMS 后不会调用父活动。它只显示对话线程,但不导航回父活动。
    【解决方案3】:

    你错了,也许你没有注意到你已经回到了调用活动。调用子活动时必须提供请求代码。 INVITE_COMPLETED 听起来有点像它可以代表一个结果代码。 RESULT_OK 和 RESULT_CANCELED 等结果代码是 Activity 类的预定义结尾。 如果你使用

    startActivityForResult(intent, MY_REQUEST_CODE);
    

    然后您可以覆盖 onActivityResult() 并在此处捕获该请求代码(在启动活动中自定义)。这是它的样子:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == MY_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
            // do something useful
            }
        }
    }
    

    【讨论】:

    • 有没有办法判断消息是否已发送?我正在这样做,当我从 SMS 活动中点击后退按钮时,无论我是否发送了 SMS,我总是将 Activity.RESULT_CANCELLED 作为 resultCode。有没有办法开始活动告诉它在发送后完成?
    • @karl 嗨,你找到那个问题的解决方案了吗?我遇到同样的问题并卡住了,请帮助我
    • 不,我从未找到解决方案。不过那是四年前的事了,Android 已经发生了很大的变化,所以现在可能有一个当时不存在的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多