如何取消从 startActivityForResult 调用的 Intent

How to Cancel Intent Called From startActivityForResult

当你 call/start 使用 startActivityForResult 函数 activity 时(在我的例子中是使用 LoginManager.getInstance().logInWithReadPermissions(this, PERMISSIONS); 登录 Facebook 有什么方法可以取消意图所以 parent activity onActivityResult 不会被调用。我想在我的 parent activity 中添加一个超时机制,以防止 child 的长时间等待activity。(当 Facebook blocked/slowed 关闭时,调用 onActivityResult 需要几分钟时间,所以我想通知用户有关可能超时的情况)

您可以 setResult(TIMEOUT) 在完成 activity 之前检查 onActivityResult 中的结果。

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

不,您不能取消它。但是,您可以跟踪这样一个事实,即您不再等待 onActivityResult() 回调,这样当调用该方法时,您会记得您不在乎并忽略它。

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

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

Activity.finishActivity(REQUEST_CODE)

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