「 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
主な問題は、QR Droidのみがインストールされていて、BarCode Scannerがインストールされていない場合です。この 2 つの条件の結果は true です (それを処理できるアプリケーションはありません)。しかし、そのインテントを実行すると:
Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
fragment.startActivityForResult(intentScan, RequestCodes.REQUEST_CODE_SCAN);
QR Droidアプリが起動します。これは良いことですが、それを予測することはできません:(回答ありがとうございます:)