美文网首页
android调用js,js调用Android http地址实测

android调用js,js调用Android http地址实测

作者: Lna_35da | 来源:发表于2020-06-18 15:46 被阅读0次

从网上巴拉了很多都是有一丝丝问题不够完美 主要问题就是Android调用js不通。
问题场景js调用了Android后立马回调js方法出现调用无效。但是从点击时间调用js是没有问题的。
解决方案以及完整代码如下:

//开启JavaScript支持
mWebview.getSettings().setJavaScriptEnabled(true);
// 注册js调用Android对象  这李的Android参数与html方法要保持一致
mWebview.addJavascriptInterface(new Info(), "android");
mWebview.loadUrl("file:///android_asset/alert.html");

JS调用Android的方法类

/**
* js调用Android方法
*/
@SuppressLint("JavascriptInterface")
public class Info {
@JavascriptInterface
public void getInfo(String data) {
//            js调用Android有参方法
ToastUtil.showShortToast(data);
toJs();
}

@JavascriptInterface
public void getInfo() {
//           js调用Android 无参方法
ToastUtil.showShortToast("js调用无参");
toJs();
}
}

Android调用JS的方法

/**android调用js
* 必须要切换到UI线程!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
* */
@JavascriptInterface
public void toJs() {
ThreadUtil.runOnUiThread(new Runnable() {
@Override
public void run() {
//注意test的''单引号
mWebview.loadUrl("javascript:javacalljswith(" + "'test'" + ")");
}
});
}

下面是html代码,这段代码可以放服务器远程访问效果是一样的,。

<html>
<head>
    <meta http-equiv="Content-Type" charset="UTF-8"/>

    <script type="text/javascript">
            function javacalljs(){
                 document.getElementById("showmsg").innerHTML = "JAVA调用了JS的无参函数";
            }

            function javacalljswith(arg){
                 document.getElementById("showmsg").innerHTML = (arg);
            }


    </script>

</head>

<body>
<h3>Web模块</h3>

<h3 id="showmsg">调用js显示结果</h3>
<!--调用无参  window.android.getInfo()  注意这个android要和webview注册js时的第二个参数一样 -->
<!--//        注册js调用Android对象
mWebview.addJavascriptInterface(new Info(), "android");-->
<input type="button" value="Js调用Java代码" onclick="window.android.getInfo()"/>
<!--调用有参-->
<input type="button" value="Js调用Java代码并传参数" onclick="window.android.getInfo('Js传过来的参数')"/>
</body>
</html>

ThreadUtil工具类参考这三行代码

Looper mainlooper = Looper.getMainLooper();
Handler handler = new Handler(mainlooper);
handler.post(runnable);

相关文章

网友评论

      本文标题:android调用js,js调用Android http地址实测

      本文链接:https://www.haomeiwen.com/subject/vnpuxktx.html