android给js提供接口
假设你现在需要调用系统的拍照功能,android工程师会为你提供一个对象和他对应的方法
WebViewTakePhoto为对象,takePhoto为拍照的方法,
webView.addJavascriptInterface(new MJavascriptInterface1(getApplicationContext()), "WebViewTakePhoto");
通过这样的形式将地址传递给前端,testParams方法由前端定义
webView.loadUrl("javascript:testParams('http://img4.imgtn.bdimg.com/it/u=103061881,2842093305&fm=26&gp=0.jpg')");
允许Javascript
mYweb.getSettings().setJavaScriptEnabled(true);
MJavascriptInterface1
class MJavascriptInterface1{
private Context context;
public MJavascriptInterface1(Context context) {
// TODO Auto-generated constructor stub
this.context = context;
}
@JavascriptInterface
public void takePhoto(){ //也可以定义参数 如: public void takePhoto(String str,int code){
Toast.makeText(context, "拍照", Toast.LENGTH_SHORT).show();
}
}
前端调用拍照方法,在自己的写的触发函数中
window.WebViewTakePhoto.takePhoto()
//如果移动端定义的有参数需要加参数如
window.WebViewTakePhoto.takePhoto(str,code)
Android原生给JavaScript传值的方法有好多,我写个我常用的方法 =_=!
Android原生给JavaScript传值
js调起android原生,原生android处理一些业务逻辑之后,再把处理完的结果返回给js
android代码
mWebView.loadUrl("javascript:WriteX('"+s+"')");
WriteX 是与js商定的或回传方法
JavaScript代码
<script>
function WriteX(res){
document.getElementById('signResult').value = res;
}
</script>
js拿到值并回显