2011-10-02 18 views
6

I (come molti altri) ha seguito il tutorial Webview, ma non riesco a caricare le pagine. Tutto appare come "Pagina Web non disponibile"WebView - WebPage non disponibile

Mi sono assicurato che l'emulatore abbia accesso a Internet, e solo per escludere un problema con l'emulatore ho provato a installarlo sul mio telefono, il che ha comportato lo stesso comportamento.

Ho letto che il problema più grande è che le persone non mettono l'autorizzazione INTERNET nel mio file manifest, che ho provato a mettere come figlio di diversi elementi nel manifest senza successo. Qualcuno sa perché non riesco a farlo caricare?

Ecco il mio codice:

Manifest:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".AndroidTestActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <uses-permission android:name="android.permission.INTERNET" /> 
    </activity>  
</application> 
</manifest> 

AndroidTestActivity

public class AndroidTestActivity extends Activity { 
    WebView webview; 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      webview = (WebView) findViewById(R.id.webview); 
      webview.getSettings().setJavaScriptEnabled(true); 

      webview.loadUrl("http://www.google.com/m"); 

      Intent intent = getIntent(); 
      // To get the action of the intent use 
      System.out.println(intent.getAction()); 
      // We current open a hard-coded URL 
      try { 
       webview.setWebViewClient(new AndroidTestClient()); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 

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

     private class AndroidTestClient extends WebViewClient { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 
     } 
} 

Grazie!

risposta

21

Il tuo permesso internet dovrebbe essere un figlio immediato di "manifest" - non dovrebbe essere in "applicazione".

ad es.

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.mypackage.name" 
    android:installLocation="auto" 
    android:versionCode="3210" android:versionName="1.1.0"> 

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

    <uses-sdk android:minSdkVersion="6" android:targetSdkVersion="10"/> 

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> 

    <!-- activities go here --> 

    </application> 
</manifest> 

Spero che questo aiuti -serkan

+0

Yep, che è stato. Sono quasi sicuro di aver provato a metterlo ovunque MA lì: p Grazie! – Saggio

+0

Per gli altri che potrebbero inciampare su questo: ho avuto lo stesso problema ma era su un progetto che avevo costruito su una macchina e trasferito su un'altra. Per qualche motivo, anche se ho copiato AndroidManifest.xml e l'intero progetto è andato bene, ma non avrebbe mai caricato il contenuto web nella webview. Ho ricevuto lo stesso errore menzionato nella domanda, anche se il mio permesso di utilizzo era nel posto giusto e anche se ho ricostruito e reinstallato l'app numerose volte. Finalmente ho apportato una modifica all'XML solo per poter ri-salvare il file e ricostruirlo. Quindi ha funzionato. Abbastanza fastidioso. – raddevus