如何在不安装条码扫描器的情况下集成Zxing?

时间:2011-11-11 14:07:22

标签: android

我将Zying android应用程序添加到我的应用程序中作为库。然后编辑了Manifest.xml并尝试使用Intent集成器。没有运气。

下载扫描仪应用程序是完全不合理的。

顺便说一下:

Intent scanIntent = new Intent("com.google.zxing.client.android.SCAN");
scanIntent.setPackage("com.google.zxing.client.android");

11-11 15:15:27.793: WARN/System.err(15384): android.content.ActivityNotFoundException: No 
Activity found to handle Intent { act=com.google.zxing.client.android.SCAN 
cat=[android.intent.category.DEFAULT] pkg=com.google.zxing.client.android (has extras) }

3 个答案:

答案 0 :(得分:15)

您试图以两种直接冲突的方式访问ZXing扫描仪。 ZXing提供的IntentIntegrator的目的是通过使用所有适当的常量和标志为您构建Intent,使访问外部扫描器应用程序变得更加简单。 如果您不想在设备上从Android电子市场安装和运行外部扫描仪应用,IntentIntegrator不适合您。您发布的Java代码也是如此,因为它与集成商创建的用于启动外部应用程序的Intent基本相同。

如果将ZXing作为库集成到项目中,则组件将成为应用程序的一部分,并且必须以此方式引用它们。例如,需要添加AndroidManifest.xml中的声明,例如:

<activity android:name="com.google.zxing.client.android.CaptureActivity"
  android:screenOrientation="landscape"
  android:configChanges="orientation|keyboardHidden"
  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> 

请确保您在此处使用了正确的名称来表示活动和操作,因为这些必须引用该库。然后,您可以使用以下命令从Java代码启动scanner:

int REQUEST_SCAN; //Request code for Intent result
String packageString = "com.yourapplication.packagename";

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage(packageString);
//Add any optional extras to pass
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
//Launch
startActivityForResult(intent, REQUEST_SCAN);

请注意,Intent操作与清单中的声明匹配,但PACKAGE是此应用程序,而不是Android Market ZXing应用程序。

HTH

答案 1 :(得分:4)

+1你的问题。我试过这个,但没有运气,然后我在我的应用程序中添加了它的代码文件。如果你愿意,你也可以这样做。这是一个链接:

http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid

如果你有更好的方法,请告诉我。

答案 2 :(得分:0)

您需要按照链接

的步骤进行操作

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

您可以从

下载core.jar

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

以上对我有用,如果你得到错误只需将core-2.2.jar放入libs并清理你的项目