537 Stimmen

Android-Webview startet den Browser, wenn loadURL aufgerufen wird

Ich habe eine Activity erstellt, die einen Titel und eine Webansicht in einem LinearLayout hat. In der Methode onResume() ruft es webView.loadUrl(url) auf. Das Problem ist, dass die Aktivität zuerst den Titel mit dem restlichen Bildschirm leer anzeigt, dann wird der Browser des Geräts mit der Seite für die URL gestartet. Was ich sehen möchte, ist die Seite, die unter dem Titel in der WebView angezeigt wird. Was könnte das Problem sein?

Bearbeiten: Ok, habe weitere Recherchen angestellt und dies gefunden:

Klicken von URLs öffnet Standardbrowser

Es verweist auf das WebView Tutorial hier.

Einfach den Web-Client implementieren und einstellen.

0 Stimmen

Ich erwähne dies, weil Sie mein Problem gelöst haben... Danke.

2 Stimmen

@Ray, erwäge, eine Antwort auf diese Frage zu schreiben, wenn du eine Lösung gefunden hast, und akzeptiere sie. Dies wird anderen Personen mit demselben Problem helfen.

1 Stimmen

Ich hatte sogar ein noch schlimmeres Problem. Es stellt sich heraus, dass selbst eine Weiterleitung im Browser geladen wird, wenn kein benutzerdefinierter WebViewClient verwendet wird.

906voto

Ray Punkte 15605

Beantwortung meiner Frage basierend auf den Vorschlägen von Maudicus und Hit.

Überprüfen Sie das WebView-Tutorial hier. Implementieren Sie einfach den Web-Client und setzen Sie ihn vor dem Laden der URL. Der einfachste Weg ist:

myWebView.setWebViewClient(new WebViewClient());

Für eine fortgeschrittenere Verarbeitung des Webinhalts sollten Sie den ChromeClient in Betracht ziehen.

3 Stimmen

Um zu verhindern, dass WebView den Standardbrowser startet, wenn die Initialseite geöffnet wird.

33 Stimmen

Vielen Dank für dieses unglaublich fantastische kleine Stück Hexerei! +1 ...MINUS ONE FÜR DICH, Android...

0 Stimmen

Ausgezeichnete Antwort. Hat auch mein Problem gelöst.

107voto

oops.objective Punkte 1244

Verwenden Sie dies:

lWebView.setWebViewClient(new WebViewClient());

0 Stimmen

@DigvijaySingh überprüfen Sie das Original der akzeptierten Antwort. Ursprünglich enthielt es diesen Code nicht. Er wurde lange nach dieser Antwort hinzugefügt.

58voto

Vinod Joshi Punkte 7388

Wie folgt verwenden:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dedline);

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl("https://google.com");
}

29voto

Abduhafiz Punkte 3028

Machen Sie Ihre Aktivität so wie diese.

public class MainActivity extends Activity {
WebView browser;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Das WebView anhand des Namens in der main.xml aus Schritt 2 finden
    browser=(WebView)findViewById(R.id.wvwMain);

    // Javascript aktivieren
    browser.getSettings().setJavaScriptEnabled(true);  

    // WebView-Client einstellen
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                }
        });
     // Lade die Webseite
    browser.loadUrl("http://google.com/");
   }
}

1 Stimmen

setJavaScriptEnabled(true) führt XSS-Sicherheitslücken in Ihre App ein. Verwenden Sie es nicht, wenn Sie JavaScript nicht benötigen.

0 Stimmen

Die Zeile, die JavaScript aktiviert, ist sehr wichtig, da sonst Sie müssen JavaScript aktivieren, um diese App auszuführen. angezeigt wird und wenn Sie danach googeln, werden Sie nur auf Personen stoßen, die Probleme mit React Native haben, und Sie werden verrückt, weil JavaScript bereits in den Browsereinstellungen aktiviert ist.

0 Stimmen

Wini, du kannst so etwas machen @ Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (mWebView.canGoBack()) { mWebView.goBack(); } else { finish(); } return true; } } return super.onKeyDown(keyCode, event); }

24voto

Arsh Kaushal Punkte 521

Ich hatte das gleiche Problem und habe die Lösung gefunden Offizielle Dokumentation von Android zu WebView

Hier ist meine onCreateView() Methode und hier habe ich zwei Methoden verwendet, um die URLs zu öffnen

Methode 1 öffnet die URL im Browser und

Methode 2 öffnet die URL in Ihrem gewünschten WebView.
Und ich benutze Methode 2 für meine Anwendung und das ist mein Code:

public class MainActivity extends Activity {
   private WebView myWebView;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);

      // Zeige den Dummy-Inhalt als Text in einem TextView an.
      if (mItem != null) {

         /* Methode : 1
          Die folgende Zeile funktioniert gut, ABER wenn auf das Menüelement geklickt wird, wird die URL im BROWSER und nicht im WebView geöffnet */
         //((WebView)   rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);

        // Methode : 2
        myWebView = (WebView) rootView.findViewById(R.id.detail_area); // Hole dein WebView aus deiner XML-Datei
        myWebView.setWebViewClient(new WebViewClient()); // Setze den WebViewClient
        myWebView.loadUrl(mItem.url); // Lade deine gewünschte URL
    }

    return rootView;
}                                                                                               }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X