0

バーコードリーダーを作成しようとしています。Zxing ライブラリを使用していますが、独自のバーコード リーダーを備えたデバイスに問題があります。私のアプリは完璧に動作しています。しかし、バーコード リーダー アプリのないデバイスでは、私のアプリは動作しません。

これは私のコードですが、デバイスにバーコード リーダーがあるかどうかを確認するにはどうすればよいですか?

public class MainActivity extends Activity {
TextView tvStatus;
TextView tvResult;
private static String BarCodeResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvStatus = (TextView) findViewById(R.id.tvStatus);
    tvResult = (TextView) findViewById(R.id.tvResult);
    BarCodeResult = tvResult.getText().toString();

    Button scanBtn = (Button) findViewById(R.id.btnScan);

    scanBtn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            try {

                Intent intent = new Intent(
                        "com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "QR_CODE_MODE,PRODUCT_MODE");
                startActivityForResult(intent, 0);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "ERROR:" + e, 1)
                        .show();

            }

        }
    });

}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
            tvResult.setText(intent.getStringExtra("SCAN_RESULT"));
            connectWithHttpGet(intent.getStringExtra("SCAN_RESULT"));
            BarCodeResult=intent.getStringExtra("SCAN_RESULT");

            Intent in = new Intent(getApplicationContext(), Result.class);
            in.putExtra("KEY_BarCodeResult", intent.getStringExtra("SCAN_RESULT"));

            startActivity(in);
        } else if (resultCode == RESULT_CANCELED) {
            tvStatus.setText("Press a button to start a scan.");
            tvResult.setText("Scan cancelled.");
        }
    }
}
4

2 に答える 2

1

はい、アプリがインストールされていない場合を処理していませんIntent

IntentIntegratorこれを処理するアプリでプロジェクトのクラスを使用するだけです。

https://github.com/zxing/zxing/blob/4fb569cce8de8e7724b39cf3f62350441a559771/android-integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java

または、それが何をするかを見て、 で同様のことを行うことができますActivityNotFoundException

于 2014-03-31T13:06:36.777 に答える
-1

簡単な方法です。スキャナーがない場合は、プレイストアにリダイレクトしてインストールします

try {
        intentscan = new Intent(
                "com.google.zxing.client.android.SCAN");
        startActivityForResult(intentscan, 0);
    } catch (ActivityNotFoundException ex) {
        new AlertDialog.Builder(MainActivity.this)
                .setIcon(R.drawable.ic_launcher)
                .setTitle("You must install\nBarcode Scanner\nof Zxing")
                .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,int which) {
                                Intent i = new Intent(
                                        Intent.ACTION_VIEW,
                                        Uri.parse("https://play.google.com/store/apps/details?id=com.google.zxing.client.android"));
                                startActivity(i);
                                finish();
                            }
                        }).show();
    }
于 2014-05-15T15:25:47.047 に答える