你好,目前我想在我的 webview onReceivedError 时从 Assets 加载我自己的 html 文件,然后在 html 文件上单击按钮后再次加载 url
首先,我在 onCreate 期间调用它
browser.setWebViewClient(new WebViewLoginBrowser());
browser.getSettings().setJavaScriptEnabled(true);
browser.addJavascriptInterface(new ErrorPageInterface(), "AndroidErrorPage");
我关闭了我的 WIFI,然后在我的 onReceivedError 中,我保存了 failingUrl 并从 Assets 中加载了我自定义的 HTML 文件
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getApplicationContext(),Integer.toString(errorCode) + "\n" + description + "\n" + failingUrl, Toast.LENGTH_LONG).show();
ErrorPage = failingUrl;
browser.loadUrl("file:///android_asset/Error Page.html");
}
然后在我的 HTML 代码中,我打开我的 WIFI 并按下一个按钮来调用 android,以便它可以再次加载 url
<html><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<link href="http://fonts.googleapis.com/css?family=Questrial" rel="stylesheet" type="text/css">
<script>
function myFunction() {
AndroidErrorPage.ReloadPage("ON");
}
</script>
</head>
<body bgcolor="#FFFFF">
<p> That is an error </p>
<p> Make sure you have a working internet connection. </p>
<p> Please click the button below to try again </p>
<button type="button" onclick="myFunction()" style="width:200px;height:200px">Refresh</button>
</body>
</html>
最后是不工作的部分,从 HTML 调用的 reloadPage 应该开始 loadUrl 但它没有并且 Toast 甚至没有出现(但是如果我删除行 browser.loadUrl(ErrorPage); 代码工作正常并且 toast 出现了)
public class ErrorPageInterface {
@JavascriptInterface
public void ReloadPage(String page) {
browser.loadUrl(ErrorPage);
// String currentpage = browser.getUrl();
Toast.makeText(getApplicationContext(), page + "\n" + ErrorPage, Toast.LENGTH_LONG).show();
}
}
基本上我想要的是 loadurl->onreceivedererror->显示我的 html 文件->单击 html 文件上的按钮->在 android 上再次加载 url,最后一部分没有工作,有人知道为什么吗?
最佳答案
代替 browser.loadUrl(ErrorPage);
使用-
browser.post(new Runnable() {
@Override
public void run() {
browser.loadUrl("file:///android_asset/secondpage.html");
}
});
因为 browser.loadUrl() 在非 UI 线程“JavaBridge”上被调用。
关于javascript - onReceivedError 后 browser.loadurl 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798126/