在我的 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