2013-04-05 24 views
3

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

 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); 

扫描仪dons't无法正确启动,它只显示示例QR码。我有一种感觉intent.setType(“文本/平原”)可能是错的?什么类型的QR读码器?或者我该如何正确启动QR阅读器?

我也有当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) { 
+0

我不明白'SEND''text/plain'是如何解决的,因为qr_code请求 – njzk2 2013-04-05 12:21:54

+0

您是否使用任何类似于zxing或zbar的库? – Shiv 2013-04-05 12:33:04

+0

你说得对,我应该使用zxing。 – rtc11 2013-04-05 12:41:35

回答

3

更换

intent.setType("text/plain"); 

intent.setType("com.google.zxing.client.android.SCAN"); 
1

按照此Demo和不包括“Android的整合.jar“在你的项目中也有这个.jar文件...也可以从Here下载Zxing Library,它会在您的应用程序中使用可用的QR码扫描仪。也有其他的方法只是用这个首先你会得到也R和D.知道其他

OR

使用此:

@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(); 
     } 

,包括在同一个项目的.jar文件属性java构建路径。你可以从here下载.jar同样的链接。