Android Webview дає net :: ERR_CACHE_MISS повідомлення


152

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

Однак, коли я запускаю додаток уперше, у веб-перегляді з'являється повідомлення:

Веб-сторінка недоступна

Не вдалося завантажити веб-сторінку за адресою [Lorem Ipsum URL]:

нетто: ERR_CACHE_MISS


Можливо, це посилання допоможе вам stackoverflow.com/questions/25664146/…
Bidhan

Відповіді:


333

Я вирішив проблему, змінивши свою 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і mwebvars?
Майкл Пачеко

@MichaelPacheco Build - від системи Android, а mweb - об’єкт веб-перегляду
Acauã Pitta,

24

Для всього, що стосується Інтернету, ваш додаток повинен мати дозвіл на Інтернет у ManifestFile. Я вирішив це питання, додавши дозвіл уAndroidManifest.xml

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

18

Відповіді зібрані! Я хотів просто поєднати всі відповіді в одну вичерпну.

1. Перевірте, чи <uses-permission android:name="android.permission.INTERNET" />немає в manifest.xml. Переконайтеся, що він вкладений під <manifest>і не<application> . Завдяки sajid45 та Ліяніс Веласкес

2. Переконайтесь, що ви використовуєте <uses-permission android:name="android.permission.INTERNET"/>замість застарілого <uses-permission android:name="android.permission.internet"/>. Велике спасибі alan_shi та крео .

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-адреси.


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

8

Використовуйте

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

Це повинно вирішити помилку.


Ця відповідь мені дуже допомогла, Дякую. Але я користуюсяWebSettings.LOAD_NO_CACHE
Олександр Скворцов

6

Також переконайтеся, що ваш код не відповідає дійсності для setBlockNetworkLoads

webView.getSettings().setBlockNetworkLoads (false);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.