Android的WebView无法返回本地资产

时间:2014-11-28 15:11:32

标签: android webview

我遇到了WebView的问题。我的应用程序内置了使用本地资产中的html制作的帮助文件。我用WebView显示html文件。

我的问题是,WebView的goBack()函数在尝试返回书签位置时无法返回上一页。

例如:

  • Page1链接到Page1中的bookmark1。
  • Page1链接到Page2。
  • 显示Page1并点击指向Page2的链接,然后goBack()可以返回到Page1。细。
  • 显示Page1并点击指向bookmark1的链接,然后点击指向Page2的链接,然后goBack()无法返回到page1。 WebView显示错误,例如找不到#bookmark1。
  • 的网址

我怀疑WebView没有处理本地文件的查看历史记录。我正在使用OS 4.0.3。

任何解决方案?

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的(妥协)解决方案。我们讨论了这个问题here,可以找到一个解决方案here(日语页面,抱歉)。在我的情况下,在知道某些Android操作系统中的错误之后,回到上一页(不是确切的锚位置)就可以了。所以我最终得到了下一个代码。

webView = (WebView)findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient()
{
    // https://stackoverflow.com/questions/6542702/basic-internal-links-dont-work-in-honeycomb-app
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
    {
        super.onReceivedError(view, errorCode, description, failingUrl);
        String url = failingUrl;
        int index = url.indexOf("#");
        if (index != -1)
        {
            url = url.substring(0, index);
        }
        webView.loadUrl(url);
    }
});

使用此代码时,如果无法使用锚点返回上一页,则会返回上一页,而不会生成锚点。我妥协了。我试图用其他使用Java Script的解决方案做得更好,但没有用。