Android Webview wyświetla komunikat net :: ERR_CACHE_MISS

152

Zbudowałem aplikację internetową i chcę utworzyć aplikację na Androida, która ma widok sieciowy, który pokazuje moją aplikację internetową. Po wykonaniu instrukcji od Google Developer, aby utworzyć aplikację, pomyślnie zainstalowałem ją na moim telefonie z Androidem 5.1.1.

Jednak gdy uruchamiam aplikację po raz pierwszy, w widoku sieciowym pojawia się komunikat:

Strona niedostępna

Nie można załadować strony internetowej pod adresem [Lorem Ipsum URL] jako:

net :: ERR_CACHE_MISS

zehata
źródło
Może ten link pomoże ci stackoverflow.com/questions/25664146/…
Bidhan

Odpowiedzi:

333

Rozwiązałem problem, zmieniając plik AndroidManifest.xml.

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

alan shi
źródło
człowieku, uratowałeś mi dzień! Po aktualizacji do Cordova 7.0.1 żaden XHR nie działał. Dodałem to ręcznie do manifestu i ... bum! :)
Radacina
5
Nie ma internetu, ale INTERNET! Duży! :)
Mike Keskinov
27

Wypróbowałem powyższe rozwiązanie, ale poniższy kod pomoże mi rozwiązać ten problem.

if (18 < Build.VERSION.SDK_INT ){
    //18 = JellyBean MR2, KITKAT=19
    mWeb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
Mike ChanSeong Kim
źródło
Gdzie to jest Buildi mwebvars?
Michael Pacheco
@MichaelPacheco Build pochodzi z systemu Android, a mweb to obiekt
webview
24

W przypadku wszystkiego, co jest związane z Internetem, Twoja aplikacja musi mieć uprawnienie internetowe w pliku ManifestFile. Rozwiązałem ten problem, dodając uprawnienia wAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
sajid45
źródło
18

Odpowiedzi zebrane! Chciałem po prostu połączyć wszystkie odpowiedzi w jedną kompleksową.

1. Sprawdź, czy <uses-permission android:name="android.permission.INTERNET" />jest obecny w manifest.xml. Upewnij się, że jest zagnieżdżony pod, <manifest>a nie<application> . Podziękowania dla sajid45 i Liyanis Velazquez

2. Upewnij się, że używasz <uses-permission android:name="android.permission.INTERNET"/>zamiast przestarzałego <uses-permission android:name="android.permission.internet"/>. Wielkie dzięki dla alan_shi i creos .

3. Jeśli wersja minimalna jest poniżej KK, sprawdź, czy masz

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

lub

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

ponieważ poprawny widok sieciowy jest dodawany tylko w KK (SDK 19). Podziękowania dla Devavraty , Mike'a ChanSeong Kim i Liyanisa Velazqueza

4. Upewnij się, że nie masz webView.getSettings().setBlockNetworkLoads (false);. Dzięki TechNikh za wskazanie tego.

5. Jeśli wszystko inne zawiedzie, upewnij się, że Android Studio, Android SDK i obraz emulatora (jeśli go używasz) są zaktualizowane. A jeśli nadal napotykasz problem, po prostu otwórz nowe pytanie i dodaj komentarz do swojego adresu URL.

zehata
źródło
Cześć zehata. Prosimy nie dodawać komentarzy ani porad dotyczących głosowania do postów. Większość czytelników nawet się nie loguje, nie mówiąc już o głosowaniu, więc dla większości czytelników nie są to przydatne informacje. Pozwól ludziom głosować organicznie.
halfer
8

Posługiwać się

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

To powinno rozwiązać błąd.

Devavrata
źródło
Ta odpowiedź bardzo mi pomogła, dzięki. Ale ja używamWebSettings.LOAD_NO_CACHE
Alexander Skvortsov
6

Upewnij się również, że Twój kod nie ma wartości true dla setBlockNetworkLoads

webView.getSettings().setBlockNetworkLoads (false);
TechNikh
źródło