在我的应用程序中,我使用 zxing 库。我通过意图开始 de zxing 条码扫描仪。但是当用户没有安装条形码扫描仪时。应用程序停止工作。如何检查 zxing 条码扫描仪是否已安装?
问问题
2955 次
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 回答