这个问题的具体流程是这样的,JS要调用我的Android中的“A”方法,“A”方法执行完毕之后需要再调用JS中的“J”方法,本来感觉很简单的东西,把我整蒙圈了,咋回事呢?因为在“A”方法中根本无法执行调用“J”方法!
!!!错误版本---------------给WebView加入设置与交互:
WebSettings webSettings = webview.getSettings();
//与js交互必须设置
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("");
/**A方法**/
@JavascriptInterface
public void A() {
//需要执行JS的“J”方法
webview.loadUrl("javascript:J('1','2','3')");
}
如果你也到了这里,你会发现,根本无法调通“J”方法,好嘛,那就看看正确的如何操作!
!!!正确版本---------------给WebView加入设置与交互:
WebSettings webSettings = webview.getSettings();
//与js交互必须设置
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("");
/**A方法**/
@JavascriptInterface
public void A() {
//需要执行JS的“J”方法
runOnUiThread(new Runnable() {
@Override
public void run() {
webview.loadUrl("javascript:J('1','2','3')");
}
});
}
非常好,到这里,加上异步操作UI的方法,我们的JS成功的调取了!NICE!