代码之家  ›  专栏  ›  技术社区  ›  rtc11

Intent.createChooser安卓二维码阅读器

  •  3
  • rtc11  · 技术社区  · 11 年前

    我希望用户从他安装的应用程序中选择一个二维码阅读器。这可以通过使用Intent.createChooser来完成。当用二维码阅读器拍摄照片时,二维码应该发送回我的应用程序。这是我迄今为止所尝试的:

            Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
                intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
    
                String title = (String) getResources().getText(R.string.chooser_title);
    
                Intent chooser = Intent.createChooser(intent, title);
    
                startActivityForResult(chooser, CUSTOM_REQUEST_QR_SCANNER);
    

    扫描仪无法正确启动,它只显示一个样本二维码。我有一种意图。setType(“text/plain”)可能错了?二维码阅读器是什么类型的?或者如何正确启动二维码阅读器?

    当QR应用程序完成时,我还有一个ActivityResult:

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == CUSTOM_REQUEST_QR_SCANNER) {
    
            Log.d(TAG, "QR activity complete");
                            //Successful scan
                            if (resultCode == RESULT_OK) {
    
    2 回复  |  直到 11 年前
        1
  •  3
  •   HulkingUnicorn    11 年前

    代替

    intent.setType("text/plain");
    

    具有

    intent.setType("com.google.zxing.client.android.SCAN");
    
        2
  •  1
  •   Shiv    11 年前

    按此操作 Demo 并且包括“ 机器人集成.jar “在你的项目中,它也有这个.jar文件……你也可以从 Here 它将使用您的应用程序中可用的二维码扫描仪。还有其他方法,只要先使用这个,你就会通过R和D了解其他方法。

    使用此:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
    
    
            Button btn_scan =(Button) findViewById(R.id.btn_scan);
            btn_scan.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                     IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
                      integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES);
    
                }
            });
        }
    
        @Override
          public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
            if (result != null) {
              String contents = result.getContents();
              if (contents != null) {
                showDialog("Found QRcode", result.toString());
              } else {
                showDialog("NO QRcode Found", "The user gave up and pressed Back");
              }
            }
        }
    
        private void showDialog(String title, CharSequence message) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(title);
            builder.setMessage(message);
            builder.setPositiveButton("OK", null);
            builder.show();
          }
    

    并在项目属性java构建路径中包含相同的.jar文件。你可以从下载.jar here 相同的链接。