QrCode扫描仪“无法解析符号CaptureActivity”

时间:2014-09-24 09:15:04

标签: android android-studio zxing

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

我使用的是Android Studio 8.1。

我从maven存储库(http://repo1.maven.org/maven2/com/google/zxing/core/3.1.0/

下载zxing core.jar文件

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

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

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

编译文件('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.");
            }
        }
    }

}

现在我得到“无法解决符号CaptureActivity”错误,我该如何解决这个问题?

此致

编辑:

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

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

但我收到以下错误:

java.lang.ClassNotFoundException:未找到类“com.google.zxing.client.android.CaptureActivity”如何解决此问题?

4 个答案:

答案 0 :(得分:1)

您无意在应用程序中使用CaptureActivity。由于这个原因,它不在core,这就是您的应用无法找到它的原因。

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

上的说明操作

答案 1 :(得分:0)

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

<intent-filter>
     <action android:name="com.google.zxing.client.android.SCAN" />
     <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>

答案 2 :(得分:0)

您遇到此错误的原因只有三个:

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

您尚未将jar添加到构建路径中。要解决此问题,请右键单击Eclipse中的jar,然后执行BuildPath►Addto Build Path。

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

答案 3 :(得分:-1)

一旦参考此链接     http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/

在AndroidManifest.xml中添加

<activity
     android:name="com.google.zxing.client.android.CaptureActivity"
     android:configChanges="orientation|keyboardHidden"
     android:screenOrientation="landscape"
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
     android:windowSoftInputMode="stateAlwaysHidden" >
     <intent-filter>
         <action android:name="com.google.zxing.client.android.SCAN" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </activity>