0

関連するビットを含めてみました。私はこれが初めてで、既存のコードで作業しています。誰かが私を正しい方向に向けてくれることを願っています。

基本的に、私のウェブサイトが www.mywebsite.com で (ハイパーリンクは 2 つしか投稿できないので、これを「A」と呼びましょう)、検索を行うことにすると、URL は次のようになります。

www.mywebsite.com/?s=notes (「B」と呼びます)

次に、検索結果を含む SearchPage アクティビティを取得します。ここで、検索結果からリンクをタップするとします。例:

上記の URL/category/easy-news/ (「C」と呼びます)

Web サイト「C」は PageActivity に読み込まれますが (実際に読み込まれます)、最初は「B」と表示されていた SearchPageActivity に読み込まれます。

その上に、3 つ目の PageActivity があるようです (ただし、3 回目に開くようには見えません)。「C」も再度ロードするもの。ただし、前述のとおり、これはまだ PageActivity です。戻るボタンを押すと PageActivity が閉じ、URL「C」の別の PageActivity が表示されます。

もう一度閉じると、最初は「B」だった同じ URL「C」で SearchPageActivity に戻ります。もう一度押すと、同じアクティビティ内の「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