-3

在我的应用程序中,我使用 zxing 库。我通过意图开始 de zxing 条码扫描仪。但是当用户没有安装条形码扫描仪时。应用程序停止工作。如何检查 zxing 条码扫描仪是否已安装?

4

2 回答 2

4

zxing wiki 上有一个页面明确提到了这种情况:

如何通过 Intents 从另一个 Android 应用程序扫描条形码

最好的集成方式是使用我们提供的小型代码库。它为您正确处理许多细节,例如设置类别、标志、选择最合适的应用程序,以及最重要的是处理未安装 Barcode Scanner 的情况

于 2012-06-16T20:39:27.830 回答
1

您可以使用以下代码段检查用户设备上是否安装了特定应用程序

try{
    ApplicationInfo info = getPackageManager().
            getApplicationInfo("com.facebook.android", 0 );
    return true;
} catch( PackageManager.NameNotFoundException e ){
    return false;
}

对于特定的 Zxing,您将使用以下内容。

 Intent intent1 = new Intent("com.google.zxing.client.android.SCAN");
 List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent1,     
            PackageManager.MATCH_DEFAULT_ONLY);    
        if(list.size() > 0)  
                // Zxing is available 
        else  
           // Zxing is not available       

一旦你发现 Zxing 可用,你可以如下调用它

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}
于 2012-06-16T20:28:55.467 回答