【问题标题】:How to Cancel Intent Called From startActivityForResult如何取消从 startActivityForResult 调用的 Intent
【发布时间】:2017-06-23 02:02:11
【问题描述】:

当您使用startActivityForResult 函数调用/启动活动时(在我的情况下,它是用于使用LoginManager.getInstance().logInWithReadPermissions(this, PERMISSIONS); 登录的Facebook 有没有办法取消意图,因此不会调用父活动onActivityResult。我想为我的父活动添加超时机制,以防止子活动的长时间等待。(当 Facebook 被阻止/减速时,需要几分钟才能调用 onActivityResult,所以我想通知用户可能超时的情况)

【问题讨论】:

    标签: android android-intent startactivityforresult


    【解决方案1】:

    您可以在完成活动之前setResult(TIMEOUT),并在onActivityResult 中查看结果。

    此外,最佳做法是在子活动中设置超时机制(您可以在意图中传递一些信息)。

    【讨论】:

    • 感谢您的回答,但子活动不是我的活动,它是第三部分活动(实际上是 FacebookActivity,它处理 Facebook 登录并将结果发送回父活动)。所以我不能从儿童活动中拨打setResult(TIMEOUT)。我需要告诉 Android 操作系统“从子活动中取消我的请求”。
    【解决方案2】:

    不,您不能取消它。但是,您可以跟踪您不再等待 onActivityResult() 回调的事实,以便在调用该方法时,您会记住您不在乎并忽略它。

    【讨论】:

    • 感谢您的回答,实际上我已经遵循/实施了您建议的相同方法。但正如我也调查过的那样,没有办法取消意图。
    【解决方案3】:

    我知道它有点老了,但我只是面临同样的问题,即 startActivityForResult(Intent, REQUEST_CODE) 启动的活动来自第 3 方,这意味着我无法手动完成它或在完成之前设置一个结果。

    但幸运的是,android为此提供了一个活动方法,只需从启动第3方的父活动中调用它即可。

    Activity.finishActivity(REQUEST_CODE)
    

    REQUEST_CODE 是您之前发送给强调文本的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多