gpt4 book ai didi

android - 如何在 Webview 中调用 Barcode Scanner,并将其传回?

转载 作者:搜寻专家 更新时间:2023-11-01 09:01:44 25 4
gpt4 key购买 nike

我有以下场景:

  1. 单击链接或按钮。
  2. 通过 ZXing 打开条码扫描器。
  3. 扫码
  4. 将解码后的数据传递给其他网页。

对于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();
}

关于android - 如何在 Webview 中调用 Barcode Scanner,并将其传回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com