我想创建一个应用程序来生成使用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>
如果我在这里错过了什么,请告诉我。
答案 0 :(得分:2)
这很困惑。你正在尝试使用Intents(好的,正确的),但不知何故也试图在你的应用程序中添加一堆代码(不需要)并同时尝试声明你的应用程序是我们的应用程序,Barcode Scanner(非常错误且对我们有害) )。
您无需更改清单。立即撤消这些更改,就像现在一样,您从我们的命名空间宣传自己作为我们的应用程序,并告诉其他应用程序您可以响应条形码扫描程序的Intents。以这种方式干扰其他应用程序并不会顺利进行。
删除您复制到项目中的所有核心和Android代码。你不需要它。
相反,你只需要android集成代码。
关注此: http://code.google.com/p/zxing/wiki/ScanningViaIntent
除了您将调用方法来编码条形码,而不是扫描。
答案 1 :(得分: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应用程序,这可能会在您的应用程序中造成一些奇怪的行为。
答案 2 :(得分: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);