我有一个 webview 忽略了我所有的 javascript 接口(interface)方法,或者至少看起来是这样。当我从普通浏览器运行该网站时,它会抛出错误,因为没有按预期定义接口(interface),但这让我相信至少调用了接口(interface)方法,但还有其他问题。谁能帮我弄清楚是什么?
声明内容
@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 接口(interface)类
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,但我也没有收到任何错误或损坏的行为。
最佳答案
事实证明,清除缓存很重要,即使您正在安装新版本的应用程序也是如此。
关于已调用 JavascriptInterface 但未显示 Toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15748811/