java - 在 Android 中扫描条形码

标签 java android barcode-scanner

当我运行应用程序时,它被强制关闭。如何扫描二维码?我需要在我的 Android 应用程序中实现条形码扫描仪。这里我在控制台上收到以下错误。如何清除此错误?...这里还添加了 zxing(code.jar) jar 文件。 我使用了下面的代码:

 public class Main extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    HandleClick hc = new HandleClick();
    findViewById(R.id.butQR).setOnClickListener(hc);
    findViewById(R.id.butProd).setOnClickListener(hc);
    findViewById(R.id.butOther).setOnClickListener(hc);
  }
  private class HandleClick implements OnClickListener{
    public void onClick(View arg0) {
      Intent intent = new Intent("com.google.zxing.client.android.SCAN");
      switch(arg0.getId()){
        case R.id.butQR:
          intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        break;
        case R.id.butProd:
          intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
        break;
        case R.id.butOther:
          intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR");
        break;
      }
      startActivityForResult(intent, 0);    //Barcode Scanner to scan for us
    }
  }
  public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
      TextView tvStatus=(TextView)findViewById(R.id.tvStatus);
      TextView tvResult=(TextView)findViewById(R.id.tvResult);
      if (resultCode == RESULT_OK) {
        tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
        tvResult.setText(intent.getStringExtra("SCAN_RESULT"));
      } else if (resultCode == RESULT_CANCELED) {
        tvStatus.setText("Press a button to start a scan.");
        tvResult.setText("Scan cancelled.");
      }
    }
  }
}

我的控制台显示以下错误:

      09-06 00:56:36.198: D/AndroidRuntime(5417): Shutting down VM
      09-06 00:56:36.198: W/dalvikvm(5417): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
      09-06 00:56:36.208: E/AndroidRuntime(5417): FATAL EXCEPTION: main
      09-06 00:56:36.208: E/AndroidRuntime(5417): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN (has extras) }
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.app.Activity.startActivityForResult(Activity.java:2817)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at biz.tekeye.scanbarcode.Main$HandleClick.onClick(Main.java:33)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.view.View.performClick(View.java:2408)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.view.View$PerformClick.run(View.java:8816)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.os.Handler.handleCallback(Handler.java:587)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.os.Handler.dispatchMessage(Handler.java:92)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.os.Looper.loop(Looper.java:123)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at android.app.ActivityThread.main(ActivityThread.java:4627)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at java.lang.reflect.Method.invokeNative(Native Method)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at java.lang.reflect.Method.invoke(Method.java:521)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
      09-06 00:56:36.208: E/AndroidRuntime(5417):   at dalvik.system.NativeStart.main(Native Method)
      09-06 00:56:38.359: I/Process(5417): Sending signal. PID: 5417 SIG: 9

最佳答案

只需安装一个可以处理该 Intent 的应用程序 (Zxing)。

此外,捕获该异常并提示用户安装所述应用程序。

关于java - 在 Android 中扫描条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12366900/

相关文章:

android - 使用 ktlint 的实时规则

java - 无法使用 Google 移动视觉 API 检测数据矩阵格式

java - Java SettableFuture 和 ListenableFuture 的 C# 等价物是什么?

android - 我如何在android中的搜索栏中绘制可绘制的进度

java - 如何在不移动布局 xml 的情况下覆盖 admob 广告

android - Android 6.0 不支持 Zbar 扫描器

delphi - 使用 delphi xe5 加载/使用 .jar 或 .so

java - 序列化/反序列化 LinkedHashMap (android) java

java - 当客户端机器有多个 IP 地址时,RMI 服务器到客户端的调用失败

java - 是/如何从托管 Spring bean 向线程提供 SecureContext