我刚刚使用BarCode扫描仪(ZXing 1.7)进行了应用。用户不在手机上使用条形码扫描仪,因此无法在我的应用程序中添加外部条形码扫描仪。我已将ZXing源添加到我的项目中,但我不知道如何在没有意图的情况下执行它。请帮我。
更新:或者如何让我的应用程序自动安装外部条形码扫描器?
答案 0 :(得分:2)
您无法安装外部条形码扫描仪以自动安装。您可以做的是检查它是否已安装,如果没有显示一个对话框,询问用户是否想要安装它(这将使用户进入应用程序市场链接)。
如果您想避免这种情况,可以直接集成ZXing库,但需要更多工作。条形码扫描仪应用程序是开源的,因此您可以从那里看到如何执行此操作。
答案 1 :(得分:1)
如果zxing条形码扫描仪安装在手机中,则非常简单:
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE"
intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history
startActivityForResult(intent, 0);
和OnActivityResult
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents =
data.getStringExtra("SCAN_RESULT"); //this is the result
}
else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
如果没有安装:你可以把这个代码放在try-catch块中并捕获异常,你可以这样做:
Uri marketUri = Uri
.parse("market://details?id=com.google.zxing.client.android");
Intent marketIntent = new Intent(Intent.ACTION_VIEW,
marketUri);
startActivity(marketIntent);
因此,如果安装了条形码扫描仪,它会将应用程序重定向到Android市场,并且应用程序会继续运行一次。
如果你不想在你的应用程序中使用其他应用程序,你必须下载zxing库并尝试使用core.jar文件中的类(它是使用apache ant创建的)。按照本教程执行此操作:http://code.google.com/p/zxing/wiki/GettingStarted
答案 2 :(得分:0)
只需使用提供的Intent-based integration code即可。这很容易。它会将用户发送到Market以下载应用程序。这比尝试自动安装它要好得多,至少有三个原因。首先,我不认为用户希望应用程序安装其他应用程序,可能不喜欢它。其次,只有当用户将设备设置为允许来自外部市场的第三方应用时,它才可能工作。最后,您将安装一个可能的旧版本。