1、html
<script type="text/javascript">
function scanCard() {
var browser = {
versions: function () {
var u = navigator.userAgent,
app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
qq: u.match(/\sQQ/i) == " qq" //是否QQ
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
if (browser.versions.android) {
android.scan();
} else if (browser.versions.ios) {
window.webkit.messageHandlers.Camera.postMessage(null);
} else {
alert("请在App内使用");
}
}
function fillInfo(numbers, times, cvvs) {
//获取数据 更新ui
}
</script>
相应位置调用:scanCard();
2、android端处理
/**js调用native
/*
webView.addJavascriptInterface(new JavaScriptinterface(this, new JavaScriptinterface.JsCall() {
@Override
public void next() {
//原生操作
}
}), "android");
public class JavaScriptinterface {
Context context;
JsCall call;
public JavaScriptinterface(Context c, JsCall jsCall) {
context = c;
this.call = jsCall;
}
/**
* 与js交互时用到的方法,在js里直接调用的
*/
@JavascriptInterface
public void scan() {
this.call.next();
}
public interface JsCall {
void next();
}
}
/**native调用js
*/
String js = "javascript:fillInfo(‘a’,'a',c)";
webView.loadUrl(js);
3、iOS端
window.webkit.messageHandlers.Camera.postMessage(null);
剩下的不会了。。。