私のアプリケーションでは、zxingライブラリを使用しています。インテントを介してバーコードスキャナーのデズシングを開始します。ただし、ユーザーがバーコードスキャナーをインストールしていない場合。アプリケーションが動作を停止します。zxingバーコードスキャナーがすでにインストールされているかどうかを確認するにはどうすればよいですか?
質問する
2955 次
2 に答える
4
zxing wikiには、このケースについて明示的に言及しているページがあります。
インテントを介して別のAndroidアプリケーションからバーコードをスキャンする方法
統合する最良の方法は、提供されているコードの小さなライブラリを使用することです。カテゴリ、フラグの設定、最も適切なアプリの選択、最も重要なバーコードスキャナーがインストールされていない場合の処理など、多くの詳細を正しく処理します。
于 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 に答える