今天完成内容:
1.学习android
二、webview与js的交互(相互调用参数、传值)
前端网页全部代码,文章最后有示例项目完整源码
<!DOCTYPE html><html><head> <meta charset="utf-8">
<title>jaydenxiao遇上了webview</title>
<script>
function sayHello() {
alert("我是无参无返回toast")
}
function alertMessage(message) {
alert(message)
}
function toastMessage(message) {
window.control.toastMessage(message)
}
function sumToJava(number1, number2){
window.control.onSumResult(number1 + number2)
}
function sumToJava2(number1, number2) {
return number1 + number2;
}
</script>
</head><body>
<button type="button" id="button" onclick="toastMessage('js调用了android方法')">js访问android中方法</button>
</body>
</html>
调用示例:
js调用Java
调用格式为window.jsInterfaceName.methodName(parameterValues)
此例中我们使用的是control作为注入接口名称。
function toastMessage(message) {
window.control.toastMessage(message)
}
function sumToJava(number1, number2){
window.control.onSumResult(number1 + number2)
}
Java调用JS
webView调用js的基本格式为webView.loadUrl(“javascript:methodName(parameterValues)”)
1. android调用js无参无返回值函数
final String call = "javascript:sayHello()";
mWebView.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(call);
}});
2. android调用js有参无返回值函数
final String call = "javascript:alertMessage("" + "我是android传过来的内容,hey man" + "")";
mWebView.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(call);
}});
3. android调用js有参有返回值函数(4.4之前)
Android在4.4之前并没有提供直接调用js函数并获取值的方法,所以在此之前,常用的思路是 java调用js方法,js方法执行完毕,再次调用java代码将值返回。
**(1).android调用js代码 **
final String call = "javascript:sumToJava(1,2)";
mWebView.post(
new Runnable() {
@Override
public void run() {
mWebView.loadUrl(call);
}});
(2).js函数处理,并将结果通过调用android方法返回
网页端:
function sumToJava(number1, number2){
window.control.onSumResult(number1 + number2)
}
(3).android在回调方法中获取js函数返回值
@JavascriptInterfacepublic void onSumResult(int result) {
Toast.makeText(getApplicationContext(), "我是android调用js方法(4.4前),入参是1和2,js返回结果是" + result, Toast.LENGTH_LONG).show();
}
4. android调用js有参有返回值函数(4.4以上):
Android 4.4以上使用evaluateJavascript即可。这里展示一个简单的交互示例 具有返回值的js方法
js代码如下:
function sumToJava2(number1, number2) {
return number1 + number2;
}
android代码如下:
@TargetApi(Build.VERSION_CODES.KITKAT)
public void Android2JsHaveParmHaveResult2(View view) {
mWebView.evaluateJavascript("sumToJava2(3,4)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String Str) {
Toast.makeText(getApplicationContext(), "我是android调用js方法(4.4后),入参是3和4,js返回结果是" + Str, Toast.LENGTH_LONG).show();
}
});}
摘抄源于:
作者:世锋日上
链接:https://www.jianshu.com/p/d2f5ae6b4927
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.看视频
遇到问题:
看不太明白
明日目标:
学习Android studio的开发