问题描述
JS调用了Android原生的方法,但是在这段被调用的原生代码中,又调用了webview的loadUrl
此时webview的loadUrl操作不起效果
问题代码结构
public class MainActivity extends Activity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
webView.loadUrl("http://xxx.com");
}
@JavascriptInterface
public void changeTest(){
// 此处的代码没有反应
webView.loadUrl("http://djzhao.cn");
}
}
问题原因
需要将代码运行在UI线程
修改后的代码
@JavascriptInterface
public void changeTest(){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
myWebView.loadUrl("http://djzhao.cn");
}
});
}