1

私はAndroidアプリケーションを書いていますが、クライアントにはバーコードスキャナーが必要です。彼らはそれについて本当に具体的であるため、彼らが望むレイアウトは次のようになります。

ここに画像の説明を入力してください

qrコードが見つかった場合、自動的に別のウィンドウにジャンプします。手動で押すと、手動で入力してアプリの残りの部分に進むように求められます。

つまり、基本的にはzxingコードをアプリに埋め込んでアクティビティに追加することはできますが、それは望ましくなく、別のアプリとして使用したいと考えています。

私が現在持っているのは、次のような別のアクティビティです。

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.initiateScan();

私もこれを試しました:

IntentIntegrator intentIntegrator = new IntentIntegrator(this);
Intent i = intentIntegrator.initiateCustomScan();

LocalActivityManager mgr = getLocalActivityManager();

Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;

if(wd != null) {
  scanButton.addView(wd);
}

しかし、その後、java.lang.SecurityExceptionが発生します。

03-19 12:22:55.890: E/AndroidRuntime(29394): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.menucard.barcode.scan/com.barcode.scan.ScanActivity}: java.lang.SecurityException: Requesting code from com.google.zxing.client.android (with uid 10139) to be run in process com.menucard.barcode.scan (with uid 10169)

誰かが私のアクティビティに別のアプリを追加する方法を知っているかもしれませんか?またはこれを達成する他の方法は?

4

2 に答える 2

1

@MindaugasSvirskas、あなたの最後のコメントはまさに私が今投稿しようとしていたものです:-)私は過去にいくつかのアプリで同じ問題に直面しました、そして私を信じて、ただインテントを利用してください、それはAndroidシステム全体がそうである方法ですアプリ間の相互通信を優先して設計されています。iOSプログラマーは、スキャンするZxingレイアウトを独自のレイアウトに簡単に統合できますが、インテントを使用することになっているので、同意します。

于 2013-03-19T12:16:45.083 に答える
1

Intent残念ながら、外部アプリを別のアプリに埋め込むことはできません。ここでの外部アプリは、画面全体を引き継ぐ必要があり、初心者向けに横向きモードになっています。

独自のアプリを作成する必要がありますが、完全にゼロから作成されないように、アプリでバーコードスキャナーの一部を再利用できます。AndroidManifest.xmlファイルをコピーしないでください。UIが異なるため、バーコードスキャナーと混同されないことも明らかだと思います。残っているのは、Apacheライセンスの条件に従うことを確認することだけです(簡単)。

于 2013-03-19T13:31:50.443 に答える