当前位置: 首页 > 知识库问答 >
问题:

QrCode扫描仪“无法解析符号捕获活动”

丌官远
2023-03-14

我想将QRCode添加到我的android应用程序中。

我使用的是Android Studio 8.1。

我下载zxing核心。maven存储库中的jar文件(http://repo1.maven.org/maven2/com/google/zxing/core/3.1.0/)

我在清单xml文件中添加了以下行:

<uses-permission android:name="android.permission.CAMERA" />
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape" >
</activity>

然后,我将jar文件添加到“lib”文件夹,并在gradle构建文件中添加为库:

编译文件('libs/core-3.1.0.jar')

我创建了以下活动:

public class QrCodeReader extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_qrcode);
        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 View.OnClickListener {
        public void onClick(View arg0) {
           Intent intent = new Intent(getApplicationContext(),CaptureActivity.class);
            intent.setAction("com.google.zxing.client.android.SCAN");
            intent.putExtra("SAVE_HISTORY", false);
            startActivityForResult(intent, 0);


        }
    }
    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.");
            }
        }
    }

}

现在我遇到“无法解决符号捕获活动”错误,我该如何修复?

问候

编辑:

我添加了以下文件,并修复了此错误

编译文件('libs/android-core-3.1.0.jar')编译文件('libs/android-integration-3.1.0.jar')

但我得到了以下错误:

Java语言lang.ClassNotFoundException:没有找到类“com.google.zxing.client.android.CaptureActivity”我该如何解决这个问题?

共有3个答案

公西凯捷
2023-03-14

在捕获活动中添加意图过滤器。

<intent-filter>
     <action android:name="com.google.zxing.client.android.SCAN" />
     <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
尉迟明辉
2023-03-14

只有三个原因你会得到这个错误:

该类确实不存在。如果您使用官方示例中的代码并获得此代码,请确保您拥有库的最新版本

您尚未将jar添加到构建路径。要解决这个问题,右键单击Eclipse中的jar,然后执行构建路径► 添加到生成路径。

jar不在 /libs文件夹中。当您将jar添加到构建路径时,会发生这种情况,但较新版本的ADT需要它在 /libs.将其放在那里并重新将其添加到构建路径中。

阮轶
2023-03-14

您不打算在您的应用程序中使用Capture Active。出于这个原因,它不在core中,这就是您的应用程序找不到它的原因。

您的代码令人困惑,因为您似乎想通过Intent集成,但是,您不需要android甚至core中的任何代码。相反,您应该按照https://github.com/zxing/zxing/wiki/Scanning-Via-Intent的说明进行操作

 类似资料:
  • 我想将zxing scanner集成到我的应用程序中,而不需要外部应用程序(play store的zxing scanner)。这是我的密码 AndroidManifest。xml 我的Android Studio说无法解析符号:<代码>。AndroidCaptureActivity,如果运行此操作,则会发生错误 Java语言lang.ClassNotFoundException:未找到类“com

  • 问题内容: 我正在使用扫描仪逐行读取文本文件,但是由于扫描仪遍历每个输入,因此如何获取行号?我的程序是这样的: 这很好用,但是例如: 我想知道它的行号,这意味着1,2,3在第1行中,而3,4,5在第2行中。我如何得到它? 问题答案: 在扫描程序执行操作时,您可以使用代替来跟踪行号。 注意: 由于扫描程序会先读取当前令牌,因此我最初发布的“明显”解决方案不起作用。 ~~~~

  • 问题内容: 我想为扫描器指定一个分隔符,该分隔符可以按某种模式进行拆分,但不会从令牌中删除该模式。我似乎无法完成这项工作,因为正则表达式所标识的所有内容也会作为分隔符的一部分被占用。有什么建议? 我的具体问题是,我的文件看起来像: 我想从文本/数字混合+行中分离出来,直到下一个文本/数字混合。我有正则表达式来标识它们,但是如上所述,因为定界符占用了我想要的内容,所以使用了它。 编辑:代码添加: 是

  • 代码运行,但无法获得函数、类等的建议。 谢谢

  • 更改applicationId后,Android Studio无法从支持库中解析AppCompatActivity、DialogFragment、support V4片段和类似项目。 我尝试过: 清洁项目 重建项目 将项目与gradle文件同步 分离gradle项目同步并再次同步 使缓存失效并重新启动 删除项目并再次克隆 删除所有依赖并添加一个再见 将应用ID重命名为以前的名称 这是我的应用程序b

  • 问题内容: 我试图找到一种方法来从键盘输入。 我尝试使用: 该方法不存在。 我尝试了作为。但是,它并不总是在每种情况下都可行,因为我从我的方法中调用的另一个方法需要作为输入。因此,我必须找到一种显式将char作为输入的方法。 有什么帮助吗? 问题答案: 你可以从中提取第一个字符: 消耗正好一个字符,你可以使用: 要严格使用一个字符,可以使用: