单击嵌入式链接时,WebView消失

时间:2013-01-17 19:54:53

标签: android browser webview

我已经做了很多谷歌搜索,但没有找到答案。我有一个webview作为整体布局的一部分与其他控件。我使用webview显示格式化文本(带有粗体和斜体字体的配方描述)和URL。 URL指向Youtube并且是完全限定的(即。http://www.youtube.com/watch?v=fyzyhuVgzRE)。当我点击网页视图中的链接时,网页视图控件本身会从布局中消失(页面上其余控件保持不变),默认网页浏览器无法启动

它表现得好像我已将Web视图的可见性设置为GONE,但我不会操纵布局上任何控件的可见性。

LogCat输出中的一个有趣线索是来自操作系统的INFO级别消息:

MotionRecognitionManager  .unregisterListener : / listener count = 0->0,
listener=android.webkit.ZoomManager$1@41ac2fc0

任何想法会导致这种行为?

修改

以下是我在活动的onCreate()方法中设置webview的方法:

webView1 = (WebView)findViewById(R.id.webView1);
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setAllowFileAccess(true);
webView1.setWebViewClient(new MyWebViewClient());

MyWebViewClient类:

private class MyWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && url.startsWith("http://")) {
            view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
}

奇怪的是,永远不会调用 shouldOverrideUrlLoading

2 个答案:

答案 0 :(得分:1)

嗯,我是一个蠢货。事实证明,锚的href属性中的双引号加倍。我的系统通过网络与MySQL数据库集成,我必须在MySQL / PHP和Android / SQLite之间进行大量的数据转换。在其中一个转换中,我双重转义了href中的引号。那应该是什么:

<a href="http://some_web_site">Link Text</a>

则呈现为:

<a href=""http://some_web_site"">Link Text</a>

在网络视图中,生成的网址看起来不错。它被正确地强调并且看起来像任何其他URL。虽然简单地将引号加倍会导致行为,但这很奇怪。我会看看Android是否存在这样的已知错误。至少WebView应该通过某种异常,而不是简单地从屏幕上消失。

答案 1 :(得分:0)

当webview尝试加载无法处理的内容时,我遇到了这种行为。截取ref使用WebViewClient单击并发送意图以在外部应用程序中打开此ref。 Check this thread.