在Android模拟器上,尝试加载Webview时出现了net::err_cache_miss错误。

25

我尝试了Android开发者网站上展示的在WebView组件中显示网页的示例,但没有成功。模拟器显示以下错误:

网页不可用,因为无法加载http://developer.android.com, 原因是:net::ERR_CHACHE_MISS

我迄今为止还没有找到任何解决方案,即使在网上查看了其他帖子后也不行。我也尝试了不同的链接。 我不知道这个错误的原因是否有助于理解,但模拟器是Nexus 4 API 21,并运行着Android 5.0.1。我正在使用Android Studio 1.0。

代码与示例相同:

In MainActivity.java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);            
    setContentView(R.layout.activity_main);

    WebView myWebView = (WebView) findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);           
    myWebView.loadUrl("http://developer.android.com/");
}

在 AndroidManifest 文件中:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <uses-permission android:name="android.permission.INTERNET" />
.....

在视图中,我添加了与示例相同的代码。

示例网址: http://developer.android.com/guide/webapps/webview.html

6个回答

43

确切地说,我曾经遇到过这个问题,解决方案是在manifest.xml文件中的<application标签之前添加以下行:<uses-permission android:name="android.permission.INTERNET"/>

要么这行缺失,要么位置错了(例如放在</manifest>标签的末尾)。


我尝试了添加权限的解决方案,它起作用了。谢谢@samuele。 - silvanasono
1
用户权限是存在的,但放错了位置,应该放在活动标签外面。我想这就是它不能正常工作的原因。 - silvanasono

14

如果有其他人遇到这个问题,由于这里没有答案,我想提供一个。对我来说,问题在于清单文件中标签的顺序。用户权限元素需要出现在应用程序元素之前。我将其直接放置在清单元素的顶部,这似乎对我有所帮助。


1
我们必须在我们首都的中心建造你的雕像!我几乎测试了数百种解决方案,但没有一种有效。耶! - Behnam Esmaili

2

事实上,在这里,标签的位置很重要。 例如,以下内容不起作用:

    <activity android:name=".MainActivity"
        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>

但是下面的代码可以完美地运行。
    <activity android:name=".MainActivity"
        android:label="@string/app_name" >
        <uses-permission android:name="android.permission.INTERNET" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

2
我曾经遇到同样的错误,我通过以下方式进行了修复:
在活动(Activity)中添加如下代码:
<activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <uses-permission android:name="android.permission.INTERNET" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
</activity>

因为我在主活动中构建了webView....希望这能帮助其他人。


1

只需在您的 AndroidManifest.xml 文件中包含这些权限即可。

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

更多的解释会更有帮助。 - Steve Heim
@SteveHeim:你是在模拟器上运行应用程序还是在真实设备上? - Mediasoft
这不是针对我的,我只是在审核第一次回答 : )。请参见此处 - Steve Heim

1
请将以下内容粘贴到 AndroidManifest.xml 文件中应用标签外部。
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.android.permission.ACCESS_NETWORK_STATE"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接