将zxing条形码扫描仪嵌入到活动中

时间:2013-03-19 11:48:20

标签: android embed zxing

我正在编写Android应用程序,我的客户端需要一个条形码扫描器。他们非常关注它,所以他们想要的布局是这样的:

enter image description here

如果找到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)

也许有人知道如何在我的活动中添加单独的应用程序?或其他方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

@MindaugasSvirskas,你最后的评论正是我现在要发布的内容:-)我过去曾经遇到过同样的问题,在几个应用程序中,相信我,只是使用Intents,这就是整个Android系统的设计,有利于应用程序之间的相互通信。 iOS程序员可以轻松地将扫描Zxing布局集成到他们自己的布局中,但是我们应该使用意图,我同意。

答案 1 :(得分:1)

不幸的是,您无法通过Intent在其他应用中嵌入外部应用。这里的外部应用程序需要接管整个屏幕,并且处于横向模式,对于初学者来说。

您应该编写自己的应用程序,但可以在应用程序中重复使用部分条形码扫描程序,这样就不会完全从头开始。请不要复制AndroidManifest.xml文件。我认为,鉴于不同的UI,它也显然不会与条形码扫描器混淆。剩下的就是确保遵循Apache许可证的条款(简单)。