Android webview-JavaScript回调不工作?
我使用WebView在android应用程序上显示网页 单击HTML中的一个按钮后,我可以成功进入Android类WebAppInterface(来自示例)并显示“Toast”警报,但尝试回调我的网页中定义的JavaCScript函数无效 这是网页的代码:(Android.html) 这是Android应用程序上的WebAppInterface:Android webview-JavaScript回调不工作?,javascript,android,html,webview,hybrid-mobile-app,Javascript,Android,Html,Webview,Hybrid Mobile App,我使用WebView在android应用程序上显示网页 单击HTML中的一个按钮后,我可以成功进入Android类WebAppInterface(来自示例)并显示“Toast”警报,但尝试回调我的网页中定义的JavaCScript函数无效 这是网页的代码:(Android.html) 这是Android应用程序上的WebAppInterface: public class WebAppInterface { Context mContext; WebView mView;
public class WebAppInterface {
Context mContext;
WebView mView;
/** Instantiate the interface and set the context */
WebAppInterface(Context c,WebView w) {
mContext = c;
mView = w;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
mView.loadUrl("javascript:ChangeColor()");
}
}
在显示toast之后,JavaScript函数ChangeColor不会被调用
有关更多参考信息,请参阅:
谢谢 解决方案是使用如下“post”功能:
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
// WebView Web = new WebView(mContext);
// mView.getSettings().setUserAgentString("Android WebView");
mView.post(new Runnable() {
public void run() {
mView.loadUrl("javascript:ChangeColor()");
}
});
}
在KitKat和forward上,您还需要使用evaluateJavascript:
mView.evaluateJavascript("ChangeColor();",null);
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
// WebView Web = new WebView(mContext);
// mView.getSettings().setUserAgentString("Android WebView");
mView.post(new Runnable() {
public void run() {
mView.loadUrl("javascript:ChangeColor()");
}
});
}
mView.evaluateJavascript("ChangeColor();",null);