2011-10-02 71 views
6

我(跟很多其他人一樣)遵循webview教程,但我無法加載頁面。一切都以「網頁不可用」的形式出現WebView - 網頁不可用

我確保模擬器確實能夠訪問互聯網,只是爲了排除模擬器的問題,我試圖在手機上安裝它,導致了相同的行爲。

我讀過最大的問題是人們沒有把INTERNET權限放在我的清單文件中,我曾嘗試將清單中不同元素的子元素放在一起無濟於事。有誰知道我爲什麼不能加載它?

這裏是我的代碼:

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

謝謝!

回答

21

您的互聯網許可應該是「明顯」的直接子女 - 不應該在「申請」下。

例如

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

希望這有助於 -serkan

+0

是的,就是這樣。我很確定我試圖把它放到任何地方但是在那裏:p謝謝! – Saggio

+0

對於其他可能偶然發現的問題:我遇到了同樣的問題,但是這是我在一臺機器上建立並轉移到另一臺機器上的項目。出於某種原因,即使我複製了AndroidManifest.xml並且整個項目運行良好,但它不會在Web視圖中加載Web內容。我收到了問題中提到的同樣的錯誤,儘管我的使用權在正確的地方,即使我重建並重新安裝了他的應用程序無數次。最後,我對xml進行了更改,以便我可以重新保存該文件並重新構建。然後它工作。非常煩人。 – raddevus