2

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

它的行为就像我已将 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从未被调用过。

4

2 回答 2

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>

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

于 2013-01-17T21:18:14.527 回答
0

当 webview 尝试加载它无法处理的内容时,我遇到了这种类型的行为。使用 WebViewClient 拦截 ref 点击并发送意图以在外部应用程序中打开此 ref。检查这个线程。

于 2013-01-17T20:02:15.703 回答