Android WebView ignoriert Ziel="_ leer", wenn WebViewClient hinzugefügt wurde

8

Ich stehe vor einem seltsamen Problem.

In meiner Anwendung muss ich eine statische HTML-Datei basierend auf der angeklickten Schaltfläche in einem WebView aus dem Ordner "Assets" laden.

Jetzt zählt eine HTML-Datei unter 5 HTML-Dateien 15 statische Links. Diese Links müssen Benutzer zu der erwähnten URL in einem mobilen Browser umleiten. Ich habe target="_blank" für diesen Zweck wie folgt in meiner HTML-Datei verwendet.

%Vor%

Nun funktioniert das in einer Beispielanwendung mit einem einfachen WebView ohne dass WebViewClient hinzugefügt wurde.

Aber ich brauche ein WebViewClient für meine anderen Funktionen. Also wird zu dieser Zeit target="_blank" völlig ignoriert. Und die URL wird in einem WebView selbst geöffnet.

Ich habe einen Workaround gefunden, den ich shouldOverrideUrlLoading wie folgt verwenden kann:

%Vor%

Dies öffnet diese spezielle URL in einem Standardbrowser.

Im Grunde genommen sind meine Fragen:

Warum wird target="_blank" ignoriert, während wir WebViewClient verwenden? Und gibt es eine andere Problemumgehung für dieses Problem? Weil ich 15 Links habe, die ich vergleichen müsste. Ich kann nicht alle URLs in einem neuen Browser laden, da es einige Links gibt, die auch in einem WebView geöffnet werden müssen.

    
MysticMagicϡ 25.09.2014, 05:58
quelle

1 Antwort

4

Ich habe eine Idee für eine Problemumgehung. Ersetzen Sie alle Links, die in einem neuen Fenster geöffnet werden sollen, durch ein benutzerdefiniertes Schema. Dann können Sie das selbst handhaben.

Für eine minimale Unterbrechung legen Sie auch ein benutzerdefiniertes Thema fest und bearbeiten alle Konfigurationsänderungen:

%Vor%

Dann können Sie in Ihrem Link-Handler die URL mit getIntent().getData() lesen.

Bitte beachten Sie auch, dass Sie mit http und https umgehen sollten. Ich habe das in meinem kurzen Beispiel übersprungen.

Hier ist ein JavaScript-Beispiel zum Umschreiben der URLs:

%Vor% %Vor%
    
rekire 25.09.2014, 07:02
quelle

Tags und Links