我使用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);
我通过这两个应用进行了调试,被叫应用转到setResult
和finish
,但永远不会调用onActivityResult
导致这种情况的原因是什么?
(我正在调用BarcodeEye项目的一个分支,重新启用通过意图调用它的能力:https://github.com/paulpv/BarcodeEye/tree/intent)
答案 0 :(得分:0)
与绝大多数关于在SO上的活动中返回内容的类似问题一样,问题在于我的代码。我在菜单活动中打电话,并在finish()
电话后立即拨打startActivityForResult()
。显然,这意味着当回复回来时,没有人在倾听。