android:zxing条形码扫描成功但不从活动返回

Bar*_*rry 12 android barcode-scanner zxing

我成功地使用zxing扫描代码,通过调用已安装的条形码阅读器的意图,但是当它发出蜂鸣声并指示良好的扫描时,我希望zxing活动将返回控制,以便我可以处理结果,但它坐在那里并尝试再次扫描.我必须按下后退按钮,然后它返回,我可以执行下一步.当我打电话给扫描仪时,是否有一些明显的标志?

任何建议都感激不尽.非常感谢.

这是我的代码:

public boolean onTouchEvent(final MotionEvent event) {

    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
    startActivityForResult(intent, 0);

    return true;
    }

public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

            // Handle successful scan

            String s = "http://www.google.com/search?q=";
            s += contents;
            Intent myIntent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
            startActivity(myIntent1);
            }
        else 
            if (resultCode == RESULT_CANCELED) {
                // Handle cancel
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 10

这是我自己的问题的完整答案,希望这有助于某人:

转到此处并复制整个IntentIntegrator类,将其添加到您的应用程序中; 也去这里并将IntentResult类复制到您的应用程序.现在将其添加到您的活动中(或通过按钮/其他触发扫描):

public boolean onTouchEvent(final MotionEvent event) {

    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();

    return true;
    }

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
      IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
      if (scanResult != null) {
        // handle scan result
          String s = "http://www.google.com/search?q=";
            s += scanResult.getContents();

            Intent myIntent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
            startActivity(myIntent1);
      }
      // else continue with any other code you need in the method
      //...
    }
Run Code Online (Sandbox Code Playgroud)

如果只是调用条码扫描器应用程序提供的服务而不是将代码块复制并粘贴到您自己的应用程序中,那将是很棒的,但这似乎是推荐的方式:(


Sea*_*wen 5

为什么不使用提供的IntentIntegrator课程?这是项目文档中提到的唯一方法,你看过那些吗?https://github.com/zxing/zxing/wiki/Scanning-Via-Intent

我创建它来包含发送和解析Intent的这些细节,所以你不要拼写错误.例如,没有额外的"com.google.zxing.client.android.SCAN.SCAN_MODE".