私の onCreate メソッドでは、webView を作成してから、assets フォルダーに保存されている 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();
}
}
したがって、これはボタンが押されたときに初めて機能します。インテントとして開いたqrコードリーダーは、スキャンして消え、値を正しく返します。しかし、ボタンが押されたときにメソッド shouldOverrideUrlLoading() が呼び出されないたびに。アプリを離れて戻ってきたことに何か関係があるのでしょうか? それを理解できないようです。
ところで、これは私がqrコードリーダーを実装するために使用したプロジェクトです https://github.com/DushyanthMaguluru/ZBarScanner