我正在尝试检查是否有任何活动,可以处理我的意图:"com.google.zxing.client.android"。可以处理这一问题的主要应用程序是zxing公司的BarCode Scanner,但QR-Droid也可以。
我使用的是:
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() == 0) //no activity can handle that
这个:
Intent test = new Intent(Intent.ACTION_VIEW,
Uri.parse("com.google.zxing.client.android"));
if (context.getPackageManager().resolveActivity(test, 0) == null)
//no activity can handy that
主要问题是,如果我只安装了QRDroid,而条形码扫描仪则没有。这两个条件的结果都是真的(没有任何应用程序可以处理)。但如果我运行这个意图:
Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
fragment.startActivityForResult(intentScan, RequestCodes.REQUEST_CODE_SCAN);
QR Droid应用程序启动。这很好,但我无法预测:(感谢回答:)
您没有在第一个代码段中显示intent
,这应该是有效的,因为它是应该查询的:https://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java#288
我打赌你已经在intent
上设置了一个限制它的包。
检查要启动的intent
。
(PS ZXing不是一家公司)