android调用js,js调用Android http地址实测非本地html。

从网上巴拉了很多都是有一丝丝问题不够完美 主要问题就是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代码,这段代码可以放服务器远程访问效果是一样的,。



    

    




Web模块

调用js显示结果

ThreadUtil工具类参考这三行代码

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

你可能感兴趣的:(android调用js,js调用Android http地址实测非本地html。)