-3

私のアプリケーションでは、zxingライブラリを使用しています。インテントを介してバーコードスキャナーのデズシングを開始します。ただし、ユーザーがバーコードスキャナーをインストールしていない場合。アプリケーションが動作を停止します。zxingバーコードスキャナーがすでにインストールされているかどうかを確認するにはどうすればよいですか?

4

2 に答える 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 に答える