【问题标题】:Zxing via intentZxing via intent
【发布时间】:2012-06-16 20:19:24
【问题描述】:

在我的应用程序中,我使用 zxing 库。我通过意图开始 de zxing 条码扫描仪。但是当用户没有安装条形码扫描仪时。应用程序停止工作。如何查看zxing条码扫描仪是否已经安装?

【问题讨论】:

  • 你能把你用来启动zxing应用程序的代码贴出来吗?
  • 我的条形码扫描器启动代码并不重要。 Vipul Shah 解决了我的问题。

标签: java android android-intent zxing


【解决方案1】:

zxing wiki上有一个页面明确提到了这个案例:

How to scan a barcode from another Android application via Intents

最好的集成方式是使用我们提供的小型代码库。它会为您正确处理许多细节,例如设置类别、标志、选择最合适的应用程序,以及最重要的是处理未安装 Barcode Scanner 的情况。 p>

【讨论】:

    【解决方案2】:

    您可以使用以下 sn-p 检查用户设备上是否安装了特定应用程序

    try{
        ApplicationInfo info = getPackageManager().
                getApplicationInfo("com.facebook.android", 0 );
        return true;
    } catch( PackageManager.NameNotFoundException e ){
        return false;
    }
    

    对于特定的 Zxing,您将使用以下内容。

     Intent intent1 = new Intent("com.google.zxing.client.android.SCAN");
     List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent1,     
                PackageManager.MATCH_DEFAULT_ONLY);    
            if(list.size() > 0)  
                    // Zxing is available 
            else  
               // Zxing is not available       
    

    一旦你发现 Zxing 可用,你可以如下调用它

    public Button.OnClickListener mScan = new Button.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);
        }
    };
    
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                // Handle successful scan
            } else if (resultCode == RESULT_CANCELED) {
                // Handle cancel
            }
        }
    }
    

    【讨论】:

    • 这一切都很好,但是,该项目已经提供了为您完成所有这些工作的代码,称为IntentIntegrator
    • @downvoter 为什么为什么为什么你能告诉我投票背后的原因吗???
    • 因为这不是 Intent 与 Barcode Scanner 集成的推荐或最佳方式。该项目将所有这些代码提供为IntentIntegrator,但更灵活、更易于使用,并且更正确地查询PackageManager
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多