Вызов StartActivityForResult () в Activity несколько раз для сканера - PullRequest
1 голос
/ 19 апреля 2020

У меня есть две кнопки для сканирования. Но как я могу отличить каждого из них на ActivityForResult? Я знаю, что должен использовать StartActivityforResult () и передавать число для каждого сканирования, но я не мог понять, как это сделать с интегратором.

  ibBinScan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scan();
            }
        });

  ibNumberScan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                scan();
            }
        });

    public void scanNow() {
        IntentIntegrator integrator = new IntentIntegrator(InboundActivity.this);
        integrator.setCaptureActivity(Portait.class);
        integrator.setOrientationLocked(false);
        integrator.setBeepEnabled(false);
        integrator.setBarcodeImageEnabled(false);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
        integrator.setPrompt("Scan Barcode");
        integrator.initiateScan();
    }


    @SuppressLint("SetTextI18n")
    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

        if (result != null) {
            if (requestCode == 1) {}
            if (requestCode == 2) {}

        } else super.onActivityResult(requestCode, resultCode, data);
    }

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

вы можете использовать:

integrator.setRequestCode(REQUEST_CODE); 
0 голосов
/ 19 апреля 2020

IntentIntegrator для zxing действительно есть установщик кода запроса для Intent. Попробуйте так: -

public static final int REQ_CODE1=23;
public static final int REQ_CODE2=25;

public void scanNow(int requestCode) {
    IntentIntegrator integrator = new IntentIntegrator(InboundActivity.this);
    integrator.setCaptureActivity(Portait.class);
    integrator.setOrientationLocked(false);
    integrator.setBeepEnabled(false);
    integrator.setBarcodeImageEnabled(false);
    integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
    integrator.setPrompt("Scan Barcode");
    integrator.setRequestCode(requestCode)
    integrator.initiateScan();
}

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if((requestCode==REQ_CODE1 || requestCode==REQ_CODE2) && resultCode==RESULT_OK){
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(requestCode==REQ_CODE1){

        }else(requestCode==REQ_CODE2){

        }
    }else{

    }
}
...