アプリで Zxing Barcode Scanner を起動して使用しIntent
、バーコードをスキャンしてデータをアプリに戻すことができます。非常に基本的なもの。問題なく長時間動作しています。私は最近、次のスタック トレースを含むエラー レポートを Play から受け取りました。
java.lang.SecurityException: Permission Denial: starting Intent
{ act=com.google.zxing.client.android.SCAN cmp=com.ups.mobile.android/com.google.zxing.client.android.CaptureActivity }
from ProcessRecord{421bafc8 11687:edu.byu.dburner.lendablefree/10141}
(pid=11687, uid=10141) not exported from uid 10137
at android.os.Parcel.readException(Parcel.java:1327)
at android.os.Parcel.readException(Parcel.java:1281)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1736)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1383)
at android.app.Activity.startActivityForResult(Activity.java:3281)
at edu.byu.dburner.lendable.xxxxx.xxxx$2.onClick(xxxxxx.java:539)
at android.view.View.performClick(View.java:3644)
at android.view.View$PerformClick.run(View.java:14313)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)
スタック トレースでわかる限りcom.ups.mobile.android
、Zxing アプリも利用する UPS アプリに問題があります。UPS アプリと私のものを同じ電話にインストールしてonClick
、問題が発生したイベントをトリガーしてみました。バーコード スキャン アプリまたは UPS アプリを選択してIntent
. 私の唯一の推測では、両方のアプリで、一度に 1 人のユーザーしかバーコード スキャナー パッケージを使用できないという何らかの衝突が発生し、その結果、SecurityException が発生したと考えられます。しかし、問題なく実行できるので、それはあまり意味がありません。多くの人が、Zxing を使用する複数のアプリを問題なくインストールしていると思います。
このエラーの原因とそれを修正するために何ができるかについての洞察を誰かが持っていますか?
編集: SeanOwen のコメントによると、特にバーコード スキャナーでこの問題が発生した場合は、実際に を使用してくださいIntentIntegrator
。これらは組み込みメソッドを提供しsetTargetApplications
ます。これをIntent
使用して、実際のバーコード スキャナー アプリのみを使用することができますsetTargetApplications(IntentIntegrator.TARGET_BARCODE_SCANNER_ONLY);
。パイのように簡単です。