条形码扫描仪应用将条形码字符串解析为URL

时间:2018-07-27 09:03:42

标签: android if-statement pattern-matching

我正在尝试构建一个用于学习目的的应用程序。这是一个简单的QR码和条形码扫描器应用程序,具有两个流程:

  1. 如果扫描的模式是URL,请打开浏览器
  2. 如果该模式不是URL,请使用扫描中的google.com/+string打开浏览器。

我通过if语句实现了第一目标

public void handleResult(Result result) {
    final String myResult = result.getText();
    Log.d("QRCodeScanner", result.getText());
    Log.d("QRCodeScanner", result.getBarcodeFormat().toString());

    if(Patterns.WEB_URL.matcher(result.getText()).matches()) {
        //  Open URL
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getText()));
        startActivity(browserIntent);
    }
}

我现在面临的挑战是我无法编译的目标编号。我当时在考虑使用else语句,并用类似google.com +字符串的形式解析Uri。预期结果是,如果扫描程序返回并且返回的值不是URL模式,请打开浏览器,然后转到google并使用返回值进行搜索。

我希望我能说清楚。这里几乎是新手-尝试学习术语和交流方式。

3 个答案:

答案 0 :(得分:0)

请尝试

public void handleResult(Result result) {
final String myResult = result.getText();
Log.d("QRCodeScanner", result.getText());
Log.d("QRCodeScanner", result.getBarcodeFormat().toString());

if(Patterns.WEB_URL.matcher(result.getText()).matches()) {
    //  Open URL
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getText()));
    startActivity(browserIntent);
}
else
{
 String scannedResult = result.getText().toString();
 String url = "https://www.google.com/search?q="+scannedResult;
 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
 startActivity(browserIntent);
}
}

答案 1 :(得分:0)

使用它来满足您的要求。

String query=result.getText(); 
    if(Patterns.WEB_URL.matcher(query).matches()) {
            //  Open URL
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, 
            Uri.parse(result.getText()));
            startActivity(browserIntent);
        }else{
            //Open url with google query
            String escapedQuery = URLEncoder.encode(query, "UTF-8");
            Uri uri = Uri.parse("http://www.google.com/#q=" + escapedQuery);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
    }

答案 2 :(得分:0)

只需简单地将此else条件代码放入您的else条件或使用完整代码

public void handleResult(Result result) { 

final String myResult = result.getText();
Log.d("QRCodeScanner", result.getText());
Log.d("QRCodeScanner", result.getBarcodeFormat().toString());

 if(Patterns.WEB_URL.matcher(result.getText()).matches()) {
    //  Open URL
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getText()));
    startActivity(browserIntent);
 }
 else{
     Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);  
     intent.putExtra(SearchManager.QUERY, result.getText());    
     startActivity(intent);
    }
 }

希望这就是您想要的。