0

我想创建一个应用程序来生成使用 Zxing 作为库的条形码。我想要一个条形码图像。我在我的主要项目中使用了以下代码。

Intent intent = new Intent("com.google.zxing.client.android.Intents.Encode"); 
intent.setPackage("com.google.zxing.client.android");
intent.addCategory(Intent.CATEGORY_DEFAULT); 
intent.putExtra("ENCODE_FORMAT", "CODE_128");  
intent.putExtra("ENCODE_DATA", "12345678912");
startActivity(intent);

但它给出了错误:

10-04 12:54:27.305: E/AndroidRuntime(399): FATAL EXCEPTION: main
10-04 12:54:27.305: E/AndroidRuntime(399): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.Intents.Encode pkg=com.google.zxing.client.android (has extras) }
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.app.Activity.startActivityForResult(Activity.java:2817)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:672)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.Fragment.startActivity(Fragment.java:747)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at com.check.MyFragment.onResume(MyFragment.java:62)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:891)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1053)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1371)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:418)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.os.Handler.handleCallback(Handler.java:587)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.os.Handler.dispatchMessage(Handler.java:92)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.os.Looper.loop(Looper.java:123)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at java.lang.reflect.Method.invokeNative(Native Method)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at java.lang.reflect.Method.invoke(Method.java:521)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    10-04 12:54:27.305: E/AndroidRuntime(399):  at dalvik.system.NativeStart.main(Native Method)

我也在清单中声明了活动。

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

如果我在这里遗漏了什么,请告诉我。

4

3 回答 3

2

这很混乱。您正在尝试使用 Intents(好,正确),但不知何故还试图向您的应用程序添加一堆代码(不需要),同时试图将您的应用程序声明为我们的应用程序,条形码扫描仪(非常错误且对我们有害)。

您无需更改清单。立即撤消这些更改,因为现在,您正在从我们的命名空间将自己宣传为我们的应用程序,并告诉其他应用程序您可以响应条码扫描仪的意图。以这种方式干扰其他应用程序不会顺利进行。

删除您复制到项目中的所有核心和 android 代码。你不需要它。

相反,您只需要 android 集成代码。

按照这个: http ://code.google.com/p/zxing/wiki/ScanningViaIntent

除了您将调用方法来编码条形码,而不是扫描。

于 2012-10-06T19:04:00.200 回答
1

Î 会说,您应该在清单中声明编码活动。像这样的东西:

<activity android:name=".encode.EncodeActivity"
          android:label="@string/share_name"
          android:stateNotNeeded="true">
  <intent-filter>
    <action android:name="com.google.zxing.client.android.ENCODE"/>
    <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>
  <!-- This allows us to handle the Share button in Contacts. -->
  <intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/x-vcard"/>
  </intent-filter>
  <!-- This allows us to handle sharing any plain text . -->
  <intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain"/>
  </intent-filter>
</activity>

如果您尝试在您的应用程序中发布 ZXing 代码,请注意,如果用户已经安装了正常的 ZXing 应用程序,这可能会导致您的应用程序出现一些奇怪的行为。

于 2012-10-06T18:53:01.903 回答
0

你的意图行为是错误的。

Intent intent = new Intent("com.google.zxing.client.android.Intents.Encode"); 

会像这样改变

Intent intent = new Intent("com.google.zxing.client.android.ENCODE");

尝试这个。

Intent intent = new Intent("com.google.zxing.client.android.ENCODE");

intent.putExtra("ENCODE_FORMAT", "CODE_128");
intent.putExtra("ENCODE_DATA", "12345678901");

startActivity(intent);
于 2013-01-08T00:55:01.937 回答