javascript - onReceivedError 后 browser.loadurl 不工作

标签 javascript android html webview

你好,目前我想在我的 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/

相关文章:

javascript - 将未知长度的数组缩减为嵌套对象

javascript - 在 Pug 中打印数组元素

android - Android 上的 FFMpeg,未定义对 libavcodec 函数的引用,尽管它在命令行中列出

android - 谷歌地图在模拟器上显示,但在设备上不显示

javascript - javascript 中的秒表使用新的 Date 对象

javascript - 如何找到所有包含 X 个字符的单词?

java - Android/Java,如何在某些字段中处理带有换行符和逗号的csv文件?

html - 页脚对齐

java - jQuery DataTables 不显示 Unicode 字符

javascript - 用jquery添加CSS样式没有效果