原生webview和javascript交互
javascript调用原生提供方法
- 从API19开始,Android提供了@JavascriptInterface对象注解的方式来建立起Javascript对象和Android原生对象的绑定,提供给JavScript调用的函数必须带有@JavascriptInterface。以下方式基于api19以后
- 使用方式及流程:
- 1,@JavascriptInterface注解;
- 2,注册JavaScriptInterface;
- 3,调用,如window.android.show("JavaScript called~!");
@javascriptInterface,无返回值
// 1. 编写Java原生方法并用使用@JavascriptInterface注解
@JavascriptInterface
public void show(String s){
Toast.makeText(getApplication(), s, Toast.LENGTH_SHORT).show();
}
// 2. 注册JavaScriptInterface。addJavascriptInterface的作用是把this所代表的类映射为JavaScript中的android对象。
webView.addJavascriptInterface(this, "android");
// 3.编写JavaScript代码
function toastClick(){
window.android.show("JavaScript called~!");
}
@javascriptInterface,有返回值
@JavaInterface
public String getMessage(){
return "Hello,boy~";
}
webView.addJavaScriptInterface(this,"Android");
function showHello(){
var str=window.Android.getMessage();
console.log(str);
}
WebView调用网页上的JavaScript代码
- 使用原生webview方法,loadUrl()
- webView.evaluateJavascript
webview方法loadUrl,需要在主线程中发起调用
// 原生代码:
webView.loadUrl("javascript:methodName(parameterValues)");
// javascript代码:
<script type="text/javascript">
function readyToGo() {
alert("Hello")
}
function alertMessage(message) {
alert(message)
}
function getYourCar(){
return "Car";
}
</script>
1. WebView调用JavaScript无参无返回值函数
String call = "javascript:readyToGo()";
webView.loadUrl(call);
2. WebView调用JavScript有参无返回值函数
String call = "javascript:alertMessage(\"" + "content" + "\")";
webView.loadUrl(call);
3. WebView调用JavaScript有参数有返回值的函数,使用webView.evaluateJavascript
@TargetApi(Build.VERSION_CODES.KITKAT)
private void evaluateJavaScript(WebView webView) {
webView.evaluateJavascript("getYourCar()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("findCar",s);
}
});
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
- 找不到素材资源介绍文章里的示例图片?
- 对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
- 模板不会安装或需要功能定制以及二次开发?
- 请QQ联系我们
发表评论
还没有评论,快来抢沙发吧!