0

在我的 onCreate 方法中,我创建了一个 webView,然后加载了一个保存在我的资产文件夹中的 HTML 文件。这一切都很好。当按下按钮时,它会使用 javascript 向此方法发送调用以打开 qr 码扫描仪。

webView.setWebViewClient(new WebViewClient()        
    {  
        /* On Android 1.1 shouldOverrideUrlLoading() will be called every time the user clicks a link, 
         * but on Android 1.5 it will be called for every page load, even if it was caused by calling loadUrl()! */  
        @Override  
        public boolean shouldOverrideUrlLoading(WebView view, String url)  
        {               
            System.out.println(url);                

            if (url.equals("fake://qr_scan")) 
            {
                launchQRScanner(view);
            }
            return false;  
        }  
    }); 

这是方法launchQRScanner()

  public void launchQRScanner(View v) {
    if (isCameraAvailable()) {
        Intent intent = new Intent(this, ZBarScannerActivity.class);
        intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});
        startActivityForResult(intent, ZBAR_SCANNER_REQUEST);

    } else {
        Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
    }
}

所以这适用于第一次按下按钮。二维码阅读器作为意图打开,它会扫描、消失并正确返回值。但是对于每次按下按钮时,shouldOverrideUrlLoading() 方法都不会被调用。可能与离开应用程序并返回有关?似乎无法弄清楚。

顺便说一句,这是我用来实现二维码阅读器的项目 https://github.com/DushyanthMaguluru/ZBarScanner

4

1 回答 1

0

已修复,只需在扫描条码后重新加载 webView。简单的修复。

于 2012-09-21T21:19:27.743 回答