Android webview-JavaScript回调不工作?

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;

我使用WebView在android应用程序上显示网页

单击HTML中的一个按钮后,我可以成功进入Android类WebAppInterface(来自示例)并显示“Toast”警报,但尝试回调我的网页中定义的JavaCScript函数无效

这是网页的代码:(Android.html)

这是Android应用程序上的WebAppInterface:

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);