2011-10-02 14 views
6

Ja (podobnie jak wiele innych) postępuję zgodnie z samouczkiem dotyczącym wyświetlania w Internecie, ale nie mogę załadować stron. Wszystko pojawia się jako "Strona niedostępna"WebView - strona internetowa niedostępna

Zapewniłem, że emulator ma dostęp do Internetu, i po prostu, aby wykluczyć problem z emulatorem, który próbowałem zainstalować na moim telefonie, co spowodowało to samo zachowanie.

Przeczytałem, że największym problemem są osoby, które nie wpisują w moim pliku manifestu uprawnień związanych z INTERNET, które próbowałem umieścić jako dziecko różnych elementów w manifeście bez skutku. Czy ktoś wie, dlaczego nie mogę tego załadować?

Oto mój kod:

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; 
      } 
     } 
} 

Dzięki!

Odpowiedz

21

Twoje zezwolenie na Internet powinno być bezpośrednim dzieckiem "manifestu" - nie powinno być pod "aplikacją".

np.

<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> 

Nadzieja to pomaga -serkan

+0

Tak, to było to. Jestem prawie pewny, że próbowałem go umieścić wszędzie ALE tam: p Dzięki! – Saggio

+0

Dla innych, którzy mogą natknąć się na to: Miałem ten sam problem, ale było to na projekcie, który zbudowałem na jednej maszynie i przeniesiono na inny. Z jakiegoś powodu, mimo że skopiowałem plik AndroidManifest.xml i cały projekt działał dobrze, ale nigdy nie załadowałby treści WWW w widoku internetowym. Otrzymałem ten sam błąd, o którym mowa w pytaniu, chociaż moje use-perm było we właściwym miejscu i mimo, że wielokrotnie go przebudowałem i ponownie zainstalowałem. W końcu dokonałem zmiany w pliku xml, aby ponownie zapisać plik i ponownie go skompilować. Potem zadziałało. Dość irytujące. – raddevus

Powiązane problemy