【问题标题】:Zxing Extra - how to?Zxing Extra - 如何?
【发布时间】:2018-01-14 16:34:14
【问题描述】:

我在我的应用中使用 Zxing Android Embedded (https://github.com/journeyapps/zxing-android-embedded)。

为了启动意图,我做了一个 js 调用:

@JavascriptInterface
public void scan(String redirectUrl) {
    IntentIntegrator integrator = new IntentIntegrator((Activity)mContext);
    integrator.setOrientationLocked(false);
    integrator.setCaptureActivity(SmallCaptureActivity.class);
    integrator.setBeepEnabled(false);

    if (redirectUrl != null) {
        Log.e("redirectUrl", redirectUrl);
        integrator.createScanIntent().putExtra("redirectUrl", redirectUrl); // this doesn't work
        integrator.addExtra("redirectUrl", redirectUrl); // this doesn't work
    }
    integrator.setPrompt("");
    integrator.initiateScan();
}

在我的 MainActivity 中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);



    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        for (String key : bundle.keySet()) {
            Object value = bundle.get(key);
            Log.e("Tag", String.format("%s %s (%s)", key,
                    value.toString(), value.getClass().getName()));
        }
    }
}

我的 onActivityResult 中没有收到任何额外内容。
有什么意义?

【问题讨论】:

  • getIntent() 似乎是错误的。应该类似于 result.getXXX()
  • 不幸的是,结果是一个 IntentResult 并且不提供任何方法来接收额外的,也不提供原始意图:github.com/zxing/zxing/blob/master/android-integration/src/main/…
  • 在使用IntentResult 时,您错过了什么extra。你想要什么信息?如果您想使用“本机”结果,请访问您的 onActivityResult 中的 data 变量

标签: android zxing


【解决方案1】:

"createScanIntent" 返回一个可以执行 putExtra() 的 Intent。

然后你必须手动调用 startActivityForResult(intent) 那个意图。 如果您在积分器上调用initialScan(),它不会有您放置的Extra,因为它们是在createScanIntent() 调用返回的Intent 上设置的,而不是在积分器本身上。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 2014-07-03
    • 2022-07-29
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多