已调用JavascriptInterface,但未显示Toast

已调用JavascriptInterface,但未显示Toast,java,javascript,android,Java,Javascript,Android,我有一个webview,它忽略了我所有的javascript接口方法,或者至少看起来是这样。当我从普通浏览器运行网站时,它会抛出错误,因为接口没有如预期的那样定义,但这让我相信接口方法至少正在被调用,但其他一些方法是错误的。有人能帮我弄清楚是什么吗 申报材料 @Override protected void onPostExecute(ValidationResult validation) { if (validation.wasSuccessful)

我有一个webview,它忽略了我所有的javascript接口方法,或者至少看起来是这样。当我从普通浏览器运行网站时,它会抛出错误,因为接口没有如预期的那样定义,但这让我相信接口方法至少正在被调用,但其他一些方法是错误的。有人能帮我弄清楚是什么吗

申报材料

    @Override
    protected void onPostExecute(ValidationResult validation)
    {
        if (validation.wasSuccessful)
        {
            URL = validation.message;
            wv = (WebView) findViewById(R.id.webView);              
            wv.addJavascriptInterface(new KioskInterface(wv.getContext()), "Android");
            WebSettings ws = wv.getSettings();
            ws.setJavaScriptEnabled(true);
            wv.loadUrl(URL);
        }
        else
        {
            errorAlert(title, msg + "\nContact network management.");
        }
    }
Kiosk接口类

public class KioskInterface {
    Context c;

    KioskInterface(Context context)
    {
        c = context;
    }

    @JavascriptInterface
    public void showToast()
    {
        Toast.makeText(c, "Hiding Keyboard", Toast.LENGTH_LONG).show();
    }
}
Javascript

function example() {
    Android.showToast();
}

我从未看到任何Toast,但我也没有收到任何错误或损坏的行为。

结果表明,清除缓存非常重要,即使您正在安装新版本的应用程序。

如果尝试输出到Logcat而不是显示Toast,会怎么样?感谢您的回复。恐怕由于我工作中系统的一些特殊性,我无法回答你的问题。基本上,我不能通过USB或模拟器直接在我的计算机上调试。为了测试,我必须将apk推送到设备上。哎哟,我为你感到痛苦…顺便问一下,javascript接口调用是否发生在UI线程上?如果不是的话,你可以试着让一个手把手给我看祝酒词是的。这很糟糕,但这是个特例。通常情况并非如此。尝试了处理程序的事情,但似乎没有什么不同。创建handler onCreate并将toast抛出到
handler.post(new Runnable(){public void run(){}})
中,然后您可以尝试在showToast方法中抛出异常以确保调用它(应用程序将崩溃)。除此之外,你确定“示例”被调用了吗?你不能先用网络视图检查一下吗?