2017-03-13 3 views
0

Ich bin zuerst Android Test App erstellen.Android WebView (Link offen)

Ich benutze Webview-Formular, und ich füge eine URL ein, und wenn ich app laufe, funktioniert es gut.

Aber wenn ich App öffnen, und klicken Sie auf einen anderen Seitenlink, als ich ausgewählte Liste, Beispiel, öffnen Sie es auf "Google Chrome". Aber ich möchte es im Webview öffnen.

Ich denke das klar erklärt.

activity_mail.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp" 
    android:paddingBottom="0dp" tools:context=".MainActivity"> 

    <WebView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/webView" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     /> 
</RelativeLayout> 

MainActivity.java

package com.example.webviewapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class MainActivity extends AppCompatActivity { 

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

     String url = "http://example.com"; 
     WebView view=(WebView) this.findViewById(R.id.webView); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 

    } 
} 

Vielen Dank!

Antwort

1

Sie benötigen einen WebViewClient

erstellen und überschreiben die shouldOverrideUrlLoading() Methode

try this:

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

    WebView view = (WebView) findViewById(R.id.webView1); 
    view.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return false; 
     } 
    }); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.loadUrl("http://example.com"); 
} 

Aus der Dokumentation der shouldOverrideUrlLoading

Geben Sie die Host-Anwendung eine Chance, das Steuerelement zu übernehmen, wenn eine neue -URL im aktuellen WebView geladen werden soll. Wenn WebViewClient nicht zur Verfügung gestellt wird, fordert WebView standardmäßig den Activity Manager auf, den richtigen Handler für die URL auszuwählen. Wenn WebViewClient bereitgestellt wird, gibt "true" zurück, bedeutet, dass die Hostanwendung die URL verarbeitet, während "false" bedeutet, dass das aktuelle WebView die URL verarbeitet.

+0

Es ist Arbeit, es ist so einfach. Vielen Dank! –

1

Überprüfen Sie das WebView-Lernprogramm here. Implementiere einfach den Webclient und setze ihn vor loadUrl. Der einfachste Weg ist:

view.setWebViewClient(new WebViewClient()); 

Für erweiterte Verarbeitung für den Web-Content, betrachten Sie den ChromeClient.