Android Webview выдает сообщение net :: ERR_CACHE_MISS

152

Я создал веб-приложение и хочу создать приложение для Android, в котором есть веб-приложение, отображающее мое веб-приложение. Следуя инструкциям Google Developer по созданию приложения, я успешно установил его на свой телефон с Android 5.1.1.

Тем не менее, когда я запускаю приложение в первый раз, веб-просмотр показывает сообщение:

страница не доступна

Веб-страница в [Lorem Ipsum URL] не может быть загружена как:

нетто :: ERR_CACHE_MISS

zehata
источник
Может быть, эта ссылка поможет вам stackoverflow.com/questions/25664146/…
Бидхан

Ответы:

335

Я решил проблему, изменив мой AndroidManifest.xml.

старый: <uses-permission android:name="android.permission.internet"/>
новый:<uses-permission android:name="android.permission.INTERNET"/>

Алан Ши
источник
чувак, ты спас мой день! После обновления до Cordova 7.0.1 XHR не работал. Я вручную добавил это в манифест и ... бум! :)
Радацина
5
Нет интернета, но ИНТЕРНЕТ! Большая! :)
Майк Кескинов
27

Я пробовал вышеуказанное решение, но следующий код помогает мне решить эту проблему.

if (18 < Build.VERSION.SDK_INT ){
    //18 = JellyBean MR2, KITKAT=19
    mWeb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
Майк Чан Сон Ким
источник
Где это Buildи mwebвАРС?
Майкл Пачеко
@MichaelPacheco Сборка из системы Android, а mweb - объект
веб-
24

Для всего, что связано с Интернетом, ваше приложение должно иметь интернет-разрешение в ManifestFile. Я решил эту проблему, добавив разрешение вAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
sajid45
источник
18

Ответы собраны! Я хотел просто объединить все ответы в один всеобъемлющий.

1. Проверьте, <uses-permission android:name="android.permission.INTERNET" />присутствует ли в manifest.xml. Убедитесь, что он вложен, <manifest>а не под<application> . Благодаря sajid45 и Liyanis Velazquez

2. Убедитесь, что вы используете <uses-permission android:name="android.permission.INTERNET"/>вместо устаревших <uses-permission android:name="android.permission.internet"/>. Большое спасибо alan_shi и creos .

3. Если минимальная версия ниже KK, убедитесь, что у вас есть

if (18 < Build.VERSION.SDK_INT ){
    //18 = JellyBean MR2, KITKAT=19
    mWeb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}

или

if (Build.VERSION.SDK_INT >= 19) {
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}

потому что правильное веб-представление добавляется только в KK (SDK 19). Благодаря Деваврата , Майку Чан Сонгу Киму и Лиянису Веласкесу

4. Убедитесь, что у вас нет webView.getSettings().setBlockNetworkLoads (false);. Спасибо TechNikh за указание на это.

5. Если ничего не помогает, убедитесь, что ваш Android Studio, Android SDK и образ эмулятора (если вы его используете) обновлены. И если вы все еще сталкиваетесь с проблемой, просто откройте новый вопрос и оставьте комментарий к своему URL.

zehata
источник
Привет, зехата. Пожалуйста, не добавляйте голосовые комментарии или советы к сообщениям. Большинство читателей даже не входят в систему, не говоря уже о голосовании, поэтому для большинства читателей это бесполезная информация. Пусть люди голосуют органично.
halfer
8

использование

if (Build.VERSION.SDK_INT >= 19) {
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    }

Это должно решить ошибку.

Devavrata
источник
Этот ответ мне очень помог, спасибо. Но я пользуюсьWebSettings.LOAD_NO_CACHE
Александр Скворцов
6

Также убедитесь, что ваш код не имеет истины для setBlockNetworkLoads

webView.getSettings().setBlockNetworkLoads (false);
TechNikh
источник