将Zxing scanResult发送到另一个活动

时间:2017-04-17 11:54:30

标签: java android opencv zxing

我已尽力解决这个问题。最后,我在这里发布它以获得解决方案(Android新手)。

我已经制作了一个Android扫描仪应用程序,我正在使用ZXing开源代码。问题是扫描后我试图将扫描结果发送到另一个活动但无法做到。

这是我的代码:

public class MainActivity extends AppCompatActivity
        implements ZXingScannerView.ResultHandler, NavigationView.OnNavigationItemSelectedListener {

    private ZXingScannerView mScannerView;
    private int CALL_SCANNER_APP;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


    // Scan Button code
    public void onClick(View v) {
        ZXingScannerView mScannerView = new ZXingScannerView(this);
        setContentView(mScannerView);
        mScannerView.setResultHandler(this);
        mScannerView.startCamera();
        //startActivityForResult(mScannerView1, CALL_SCANNER_APP);
    }

    @Override
    protected void onPause (){
        super.onPause();
        mScannerView.stopCamera();
    }
    @Override
    public void handleResult(Result result) {
        ResultActivity.tvresult.setText(result.getText());

        /*Log.w("handleReuslt", result.getText());
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Scan Result");
        builder.setMessage(result.getText());
        AlertDialog alertDialog = builder.create();
        //alertDialog.show();

        builder.setPositiveButton("Result", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent(MainActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
        builder.setNegativeButton("OK", null).show();*/
        //Resume Scanning
        //mScannerView.resumeCameraPreview(this);


    }

有一种方法可以将一项活动的结果发送到其他活动scanActivityForResult(),但就我而言,我没有在public void onClick(View v)上使用意图

那么我该如何做到这一点。

谢谢!

2 个答案:

答案 0 :(得分:0)

将以下代码用于按钮单击。

Intent intent = new Intent(SelectOptionActivity.this, CaptureActivity.class);
                intent.putExtra("SCAN_MODE", "ONE_D_MODE");
                intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,EAN_13,EAN_8,UPC_A,QR_CODE");
                intent.setAction(Intents.Scan.ACTION);
                startActivityForResult(intent, 1);

并覆盖此方法以获得扫描结果。

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 1 && resultCode == RESULT_OK) {
            final String contents = intent.getStringExtra(Intents.Scan.RESULT);
            final String formatName = intent.getStringExtra(Intents.Scan.RESULT_FORMAT);

        }
    }

答案 1 :(得分:0)

in handleDecodeInternally you directly intent the Capture Activity to desired Activity

private void handleDecodeInternally(Result rawResult, ResultHandler resultHandler, Bitmap barcode) {

maybeSetClipboard(resultHandler);

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);



if (resultHandler.getDefaultButtonID() != null && prefs.getBoolean(PreferencesActivity.KEY_AUTO_OPEN_WEB, false)) {
  resultHandler.handleButtonPress(resultHandler.getDefaultButtonID());
  return;
}

statusView.setVisibility(View.GONE);
viewfinderView.setVisibility(View.GONE);
resultView.setVisibility(View.GONE);


  Intent intent = new Intent(CaptureActivity.this, AfterCaptureActivity.class);
  startActivity(intent);
  finish();