2011-10-02 73 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