【问题标题】:onActivityResult not firing across different applicationsonActivityResult 没有跨不同的应用程序触发
【发布时间】:2014-04-25 05:42:09
【问题描述】:

我正在使用 startActivityForResult / onActivityResult 在 Google Glass 上的两个应用程序之间进行通信。

调用代码:

Intent intentScan = new Intent("com.github.barcodeeye.SCAN");
intentScan.setPackage("com.github.barcodeeye");
intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intentScan.putExtra("SCAN_MODE", "QR_CODE_MODE");
intentScan.putExtra("RESULT_DISPLAY_DURATION_MS", 1000L);
intentScan.putExtra("SAVE_HISTORY", false);
intentScan.putExtra("PROMPT_MESSAGE", "Scan MQTT Config Code");

startActivityForResult(intentScan, 333);

响应码:

    activity.setResult(Activity.RESULT_OK, (Intent) message.obj);
    activity.finish();

onActivityResult

    if (requestCode == 333 && resultCode == RESULT_OK)
        processQRCode(data);

我调试了这两个应用程序,被调用的应用程序到达setResultfinish,但从未调用过onActivityResult

这是什么原因造成的?

(我正在调用 BarcodeEye 项目的一个分支,它重新启用了通过意图调用它的能力:https://github.com/paulpv/BarcodeEye/tree/intent

【问题讨论】:

  • 您能附上您的onActivityResult() 代码吗?
  • 我可以,但是......它显然与问题无关,因为它永远不会被调用。
  • 好吧,那我换个方式问:你的onResultActivity()是这样定义的吗? public void startActivityForResult (Intent intent, int requestCode, Bundle options)
  • 公平。是的,它会被其他startActivityForResult() 调用。在这些情况下,被调用的活动托管在我的应用程序中,这里是一个不同的应用程序。这是我能发现的唯一真正的区别。
  • 应该不是问题。有任何类实现差异吗?我的意思是,您从Activity 调用startActivityForResult() 而另一个应用调用Fragment 或类似的东西?

标签: android google-glass google-gdk


【解决方案1】:

与关于在 SO 上跨活动返回内容的绝大多数类似问题一样,问题出在我的代码上。我是从一个菜单活动内部调用的,并且在startActivityForResult() 调用之后立即调用finish()。显然,这意味着响应返回时没有人在听。

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多