作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下场景:
对于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/
我是一名优秀的程序员,十分优秀!