Android Webview cung cấp cho mạng :: tin nhắn ERR_CACHE_MISS


152

Tôi đã xây dựng một ứng dụng web và muốn tạo một ứng dụng Android có một webview hiển thị ứng dụng web của tôi. Sau khi làm theo hướng dẫn từ Google Developer để tạo ứng dụng, tôi đã cài đặt thành công ứng dụng này trên điện thoại của mình với Android 5.1.1.

Tuy nhiên, khi tôi chạy ứng dụng lần đầu tiên, webview hiển thị thông báo:

trang web hiện không khả dụng

Không thể tải trang web tại [URL Lorem Ipsum dưới dạng:

net :: ERR_CACHE_MISS


Có thể liên kết này sẽ giúp bạn stackoverflow.com/questions/25664146/ từ
Bidhan

Câu trả lời:


332

Tôi đã giải quyết vấn đề bằng cách thay đổi AndroidManifest.xml.

cũ: <uses-permission android:name="android.permission.internet"/>
mới:<uses-permission android:name="android.permission.INTERNET"/>


Người đàn ông, bạn đã cứu ngày của tôi! Sau khi nâng cấp lên Cordova 7.0.1, XHR không hoạt động. Tôi tự thêm nó vào bảng kê khai và ... bùng nổ! :)
Radacina

5
Không có internet, nhưng INTERNET! Người LỚN! :)
Mike Keskinov

27

Tôi đã thử giải pháp trên, nhưng đoạn mã sau giúp tôi giải quyết vấn đề này.

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

Đây là đâu Buildmwebvars?
Michael Pacheco

@MichaelPacheco Build là từ Hệ thống Android và mweb là đối tượng xem web
Acauã Pitta

24

Đối với mọi thứ liên quan đến internet, ứng dụng của bạn phải có sự cho phép của internet trong ManifestFile. Tôi đã giải quyết vấn đề này bằng cách thêm quyền vàoAndroidManifest.xml

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

18

Đáp án lắp ráp! Tôi muốn chỉ kết hợp tất cả các câu trả lời thành một toàn diện.

1. Kiểm tra nếu <uses-permission android:name="android.permission.INTERNET" />có mặt trong manifest.xml. Hãy chắc chắn rằng nó được lồng dưới <manifest>và không<application> . Cảm ơn sajid45Liyanis Velazquez

2. Đảm bảo rằng bạn đang sử dụng <uses-permission android:name="android.permission.INTERNET"/>thay vì không dùng nữa <uses-permission android:name="android.permission.internet"/>. Rất cám ơn alan_shi creos .

3. Nếu phiên bản tối thiểu dưới KK, hãy kiểm tra xem bạn có

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

hoặc là

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

bởi vì webview thích hợp chỉ được thêm vào KK (SDK 19). Cảm ơn Devavrata , Mike ChanSeong KimLiyanis Velazquez

4. Đảm bảo rằng bạn không có webView.getSettings().setBlockNetworkLoads (false);. Cảm ơn TechNikh chỉ ra điều này.

5. Nếu vẫn thất bại, hãy đảm bảo rằng Android Studio, Android SDK và hình ảnh giả lập (nếu bạn đang sử dụng) được cập nhật. Và nếu bạn vẫn gặp vấn đề, chỉ cần mở một câu hỏi mới và đưa ra nhận xét bên dưới cho URL của bạn.


Chào zehata. Vui lòng không thêm bình luận hoặc lời khuyên cho bài viết. Hầu hết các độc giả thậm chí không đăng nhập, hãy để một mình bỏ phiếu, vì vậy đó không phải là thông tin hữu ích cho hầu hết các độc giả. Hãy để mọi người bỏ phiếu hữu cơ.
Halfer

8

Sử dụng

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

Nó sẽ giải quyết lỗi.


Câu trả lời này đã giúp tôi rất nhiều, Cảm ơn. Nhưng tôi sử dụngWebSettings.LOAD_NO_CACHE
Alexander Skvortsov

6

Ngoài ra, hãy đảm bảo mã của bạn không đúng với setBlockNetworkLoads

webView.getSettings().setBlockNetworkLoads (false);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.