0

我尝试包括相关位。我是这方面的新手,并且正在使用现有代码。我希望有人能指出我正确的方向。

基本上,假设我的网站是 www.mywebsite.com(我们称之为“A”,因为我只能发布两个超链接)并且您决定进行搜索,所以现在 URL 如下所示:

www.mywebsite.com/?s=notes(称之为“B”)

然后,您将获得带有搜索结果的 SearchPage 活动。现在假设我点击搜索结果中的链接。例子:

上面的网址/category/easy-news/(称之为'C')

网站“C”应该在 PageActivity 中加载(它确实如此),但仍会在最初显示“B”的 SearchPageActivity 中加载。

最重要的是,似乎还有第三个 PageActivity(尽管它看起来不像第三次打开)。一个也再次加载“C”的。如前所述,它仍然是 PageActivity。按返回关闭 PageActivity 并显示另一个带有 URL 'C' 的 PageAccticity。

关闭第二次将我带回 SearchPageActivity,使用相同的 URL“C”,最初是“B”。再按一次让我回到同一活动中的“B”。

MainActivity 似乎没有这个问题,只是在 SearchPage 活动中。在 MainActivity 中,一切正常。下面的代码来自 SearchPage 活动。

对不起,冗长的消息。我希望有人能帮帮忙。谢谢。

谢谢。

private boolean isAppOrGamePage(String paramString) {
        if ((paramString == null)
                || paramString.length() < 24
                || (!paramString.substring(0, 24).equals(
                        "http://www.mywebsite.com")))
            return false;

        String str1 = paramString.substring(24);
        String str2 = str1.substring(0, 1 + str1.indexOf('/', 2));
        if ((!mAppIdentifiers.contains(str2))
                && (!mGameIdentifiers.contains(str2)))
            return false;
        return true;
    }

    public boolean shouldOverrideUrlLoading(WebView paramWebView,
            String paramString) {

        if (MainActivity.DEBUG)
            Log.e("shouldOverride", paramString);
        if (Uri.parse(paramString).getHost() != null
                && (!Uri.parse(paramString).getHost()
                        .equals("myspace.com"))
                && (!paramString.contains("facebook.com"))
                && (!Uri.parse(paramString).getHost()
                        .contains("twitter.com"))
                && (!Uri.parse(paramString).getHost()
                        .equals("goo.gl"))
                && (!Uri.parse(paramString).getHost().contains("bit.ly"))
                && (!Uri.parse(paramString).getHost()
                        .contains("plus.google.com"))
                && (!Uri.parse(paramString).getHost()
                        .contains("youtube.com")))
            if (isAppOrGamePage(paramString)) {
                final Intent intent = new Intent(SearchActivity.this,
                        PageActivity.class);
                intent.putExtra("app_url", paramString);
                startActivity(intent);
            } else
                return false;
        return false;

    }
}
4

1 回答 1

0

当您打开其他活动时返回 true。您需要使用该调用。

Returning true tells the webview that you have handled it, and don't want it to do anything with it.

于 2013-01-24T22:43:52.690 回答