我有以下情况:
- 单击链接或按钮。
- 用 ZXing 打开条码扫描器。
- 扫码。
- 将解码后的数据传递给其他网页。
对于 1 和 4,必须在 WebView 内部执行。我面临的问题是,使用此https://code.google.com/p/zxing/wiki/ScanningFromWebPages,我将在默认浏览器中打开网页。我应该使用 Intent 来解决这个问题吗?或者有什么更好的解决方法?
我有以下情况:
对于 1 和 4,必须在 WebView 内部执行。我面临的问题是,使用此https://code.google.com/p/zxing/wiki/ScanningFromWebPages,我将在默认浏览器中打开网页。我应该使用 Intent 来解决这个问题吗?或者有什么更好的解决方法?
成功运行,需要在JavascriptInterface中添加调用Intent的代码,获取解码内容的onActivityResult不应该放在JavascriptInterface中。
示例代码:
public class MainView extends Activity {
private WebView webView;
public static String barcode = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1); //you might need to change webView1
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
webView.setWebViewClient(new WebViewClient());
} // onCreate();
public class JavaScriptInterface {
Context mContext;
// Instantiate the interface and set the context
JavaScriptInterface(Context c) {
mContext = c;
}
// using Javascript to call the finish activity
public void closeMyActivity() {
finish();
}
public void scanBarcode() {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
startActivityForResult(intent, 0);
}
} //JavascriptInterface
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
//here is where you get your result
barcode = intent.getStringExtra("SCAN_RESULT");
}
}
}
}
在您的 Javascript 中:
function scan(){
Android.scanBarcode();
}