2011-09-05 16 views
81

Il mio problema è che la pagina Web non è caricata all'interno della webview.Come caricare la pagina Web esterna in WebView

mWebview.loadUrl("http://www.google.com"); lancia il browser web ...

Questo è il codice della mia attività:

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class Main extends Activity { 

    private WebView mWebview; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mWebview = new WebView(this); 
     mWebview.loadUrl("http://www.google.com"); 
     setContentView(mWebview); 
    } 
} 

ho aggiunto il permesso richiesto nel Manifesto:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

Ciao Gilbou il codice sta lavorando in 2.2 –

+0

Ma non con me :(Né su HTC Wildfire, né sul Emulator ... Io proprio non capisco. – Gilbou

+1

Ok ... ora funziona. Ma lancia il browser web invece di mostrare la pagina all'interno della webview – Gilbou

risposta

175

Grazie a questo post, ho finalmente trovato la soluzione. Ecco il codice:

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebResourceError; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 
import android.annotation.TargetApi; 

public class Main extends Activity { 

    private WebView mWebview ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     mWebview = new WebView(this); 

     mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 

     final Activity activity = this; 

     mWebview.setWebViewClient(new WebViewClient() { 
      @SuppressWarnings("deprecation") 
      @Override 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
      } 
      @TargetApi(android.os.Build.VERSION_CODES.M) 
      @Override 
      public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) { 
       // Redirect to deprecated method, so you can use it in all SDK versions 
       onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString()); 
      } 
     }); 

     mWebview .loadUrl("http://www.google.com"); 
     setContentView(mWebview); 

    } 

} 
+48

+1 Per trovare autonomamente la risposta e condividerla con tutti gli altri – momo

+0

Bella cosa ma voglio visualizzare il web contiene la pagina wise.it possibile usando la webview? –

+10

Non dimenticare di aggiungere Permission star18bit

27

provare questo

webviewlayout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/help_webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scrollbars="none" 
/> 

nella vostra attività:

WebView webView; 
setContentView(R.layout.webviewlayout); 
webView = (WebView)findViewById(R.id.help_webview); 
webView.getSettings().setJavaScriptEnabled(true); 
webview.loadUrl("http://www.google.com"); 

Aggiornamento

Aggiungi webView.setWebViewClient(new WebViewController()); alla vostra attività.

classe WebViewController:

public class WebViewController extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 
+0

ha ancora lo stesso problema dopo aver implementato la tua soluzione ... – Gilbou

+1

scusa. il manifest e ora funziona anche, ma ancora, la pagina è caricata nel browser web, non nella webview – Gilbou

+0

Ho aggiornato il codice per forzare la pagina di caricamento nella webview –

11

Si prega di questo codice: -

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@drawable/background"> 
    <RelativeLayout android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:background="@drawable/top_heading" 
     android:id="@+id/rlayout1"> 
     <TextView android:layout_width="wrap_content" 
      android:layout_centerVertical="true" android:layout_centerHorizontal="true" 
      android:textColor="#ffffff" android:textSize="22dip" 
      android:textStyle="bold" android:layout_height="wrap_content" 
      android:text="More Information" android:id="@+id/txtviewfbdisplaytitle" /> 
    </RelativeLayout> 
    <RelativeLayout android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_below="@+id/rlayout1" 
     android:id="@+id/rlayout2"> 
     <WebView android:id="@+id/webview1" android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1.0" /> 
    </RelativeLayout> 
</RelativeLayout> 

MainActivity.Java

public class MainActivity extends Activity { 
    private class MyWebViewClient extends WebViewClient { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 
    } 
    Button btnBack; 
    WebView webview; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     webview=(WebView)findViewById(R.id.webview1); 
     webview.setWebViewClient(new MyWebViewClient()); 
     openURL(); 
    } 

    /** Opens the URL in a browser */ 
    private void openURL() { 
     webview.loadUrl("http://www.google.com"); 
     webview.requestFocus(); 
    } 
} 

Prova questo codice se qualsiasi domanda mi chiedono .

+0

In realtà funziona come un incantesimo! Grazie mille per la risposta – chntgomez

+1

funziona. Ma hai perso 2 cose. In primo luogo, non hai mostrato il permesso di internet è necessario, in secondo luogo, l'uso di immagine di sfondo. grazie –

0

Aggiungi il metodo seguente nella tua classe di attività.Il browser non è altro che il tuo oggetto webview.

Ora è possibile visualizzare facilmente il contenuto della pagina Web.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && browser.canGoBack()) { 
     browser.goBack(); 
     return true; 
    } 
    return false; 
} 
+0

Non risponde alla domanda – CocoNess

+0

Questo aggiunge una funzionalità al pulsante "indietro" nella parte inferiore del telefono Android: Funziona come un pulsante del browser "indietro". –

14
public class WebViewController extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
} 
webView.setWebViewClient(new WebViewController()); 
+3

Sarebbe ancora meglio se spiegassi il codice che hai postato. –

+1

Sto impostando un webViewClient personalizzato sulla mia webview. Nel mio custom WebViewClient, ho sovraccaricato il metodo shouldOverrideUrlLoading per caricare il mio URL. Sto passando il mio url con questa loc: webview.loadUrl ("URL"); – Rahul

+0

Questo è un cattivo modo di farlo. 'shouldOverrideUrlLoading' viene chiamato per tutte le pagine caricate nella visualizzazione Web. Ciò include iFrame, il che significa che se la pagina carica un iFrame, la pagina verrà sostituita dall'iFrame. Questo è scoraggiato nella pagina relativa ai documenti Android. – Penn

1

Si può fare in questo modo.

webView = (WebView) findViewById(R.id.webView1); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl("Your URL goes here"); 
1

E 'molto semplice cercare di integrare queste righe di codice prima autorizzazione Diventa nel file manifesto Android

<uses-permission android:name="android.permission.INTERNET" /> 

poi scrivere del codice in te Activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.MainActivity"> 

<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/help_webview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

/> 

</LinearLayout> 

Quindi scrivi questi codici nel tuo Mai nActivity.java

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Window; 
import android.webkit.WebResourceRequest; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

public class MainActivity extends Activity{ 
    private WebView mWebview ; 
    String link = "";// global variable 
    Resources res;// global variable 
    @Override 


     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.activity_modernherbal_main); 
      mWebview = (WebView) findViewById(R.id.help_webview); 
      WebSettings webSettings = mWebview.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setUseWideViewPort(true); 
      webSettings.setLoadWithOverviewMode(true); 



     final Activity activity = this; 

     mWebview.setWebViewClient(new WebViewClient() { 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
      } 


}); 

    mWebview .loadUrl("http://www.example.com"); 

} 

}

Prova questo vi aiuterà a risolvere il tuo problema

0

provare questo;

webView.loadData("<iframe src='http://www.google.com' style='border: 0; width: 100%; height: 100%'></iframe>", "text/html; charset=utf-8", "UTF-8"); 
Problemi correlati