如何强制使用zxing lib只用我的应用程序?

Mus*_*ven 3 android zxing

好吧,假设有3个不同的应用程序在手机上使用zxing lib.每当我想用我自己的应用程序打开zxing时,android会问我是否使用app 1或app 2或我自己的应用程序完成操作.如何强制它仅通过我的应用程序运行而没有任何对话框?有没有机会这样做?

编辑

在CommonsWare的附加中,如果要处理其他活动的条形码结果,则可以执行此操作.

第1步:跳转到Capture Activity中名为handleDecode的方法.在handleDecodeInternally(rawResult,resultHandler,barcode)之后添加这些行;

Intent intent = new Intent(getIntent().getAction());
intent.putExtra("SCAN_RESULT", rawResult.getText());
setResult(RESULT_OK,intent);
finish();
Run Code Online (Sandbox Code Playgroud)

第2步:对其他活动的onActivityResult事件做任何想做的事情.

PS:再次感谢CommonsWare.

Com*_*are 7

首先,没有"zxing lib".您应该使用条形码扫描仪应用程序,在活动级别将其绑定到您的应用程序中,理想情况下使用它们的IntentIntegrator代码.这是一个展示这一点的示例应用程序.ZXing的创建者特别不支持或认可将条形码扫描器源代码烘焙到另一个应用程序中.

但是,鉴于您的症状,我必须假设您正在尝试将条形码扫描程序源代码添加到您自己的应用程序中.

你可能在扫描活动元素的清单中有这样的东西:

        <intent-filter >
            <action android:name="com.google.zxing.client.android.SCAN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

您不是条形码扫描仪.然而,这<intent-filter>声称您是条形码扫描仪.

您需要删除它<intent-filter>,修改条形码扫描器源代码的副本以不需要它,然后使用基于组件的Intent构造函数启动扫描活动(例如,new Intent(this, ThisIsYourRevisedScanningActivity.class)).

  • 为了记录,欢迎您重复使用Barcode Scanner中的代码.这是一个完整的复制,这是一个问题,原因很多,包括这里的一个 - 应用程序错误地拦截了Intent for BS. (2认同)