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

これはかなり混乱しています。インテント(良い、正しい)を使用しようとしていますが、どういうわけか、アプリに大量のコードを追加しようとしている(必要ありません)と同時に、アプリを私たちのアプリであるバーコードスキャナー(非常に間違っており、私たちにとって有害)であると宣言しようとしています)。

マニフェストを変更する必要はありません。これらの変更をすぐに元に戻します。現在、名前空間からアプリとして自分自身を宣伝し、他のアプリにバーコードスキャナーのインテントに応答できることを伝えています。この方法で他のアプリに干渉することはうまくいきません。

プロジェクトにコピーしたコアコードとAndroidコードをすべて削除します。あなたはそれを必要としません。

代わりに、android-integrationコードのみが必要です。

これに従ってください: 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 に答える