2011-12-07 16 views
13

Tôi gọi loadData trên WebView tôi và đi qua nó một số HTML dưới dạng một chuỗi như vậy:'trang web không có sẵn' với WebView.loadData() CHỈ trong giả lập

webView.loadData(htmlString, "text/html", "utf-8"); 

Nó hoạt động tốt trên Galaxy Tab 10.1 của tôi, nhưng WebView hiển thị:

Webpage not available

khi chạy trên giả lập với tất cả mọi thứ thiết lập để phù hợp với Galaxy Tab của tôi. Đặt android.permission.INTERNET trong tệp kê khai không có hiệu lực, mặc dù tôi không cần quyền đó vì tôi đang hiển thị HTML trong bộ nhớ và không truy cập bất kỳ thứ gì qua kết nối dữ liệu.

Điều gì đang xảy ra?

Trả lời

34

Hãy thử với mã này

webView.loadData(URLEncoder.encode(htmlString).replaceAll("\\+"," "), "text/html", "utf-8"); 

insted của

webView.loadData(htmlString, "text/html", "utf-8"); 

nó nên làm việc, bởi vì đôi khi nhân vật như '%', '\', '#' tạo ra vấn đề nếu nó không đúng Encoded

+1

Cảm ơn Viraj, bạn chỉ cần lưu cuộc sống của tôi, tôi đã bị mắc kẹt trên prob này trong một thời gian đăng nhập. 1 cho bạn (tôi sẽ cung cấp cho bạn 100 nếu tôi có thể). – orchidrudra

+1

Câu trả lời của bạn đã giúp tôi, +1 cho bạn :) – Nermeen

+0

Giúp tôi quá, Cảm ơn Viraj. Cũng bị mắc kẹt trên prob này. 1 cho bạn. – kamil

26

Trong 2.x nền tảng loadData() không thành công trong một số trường hợp (yêu cầu phải thoát HTML), sử dụng loadDataWithBaseURL() thay thế và vượt qua null cho baseUrlhistoryUrl:

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null); 
+0

điều này làm việc cho tôi. và nó có lẽ nhanh hơn "sử dụng URLEncoder và replaceAll regex". –

+0

+1 cho tôi. Chỉ cần một phụ lục nhanh: bạn nên chỉnh sửa câu trả lời của mình và đặt 'webview.loadDataWithBaseUrl (null, htmlString," text/html "," utf-8 ", null);' Cảm ơn sự giúp đỡ! – leocadiotine

+0

thnx rất nhiều fardjad, tôi có thể là nô lệ của bạn trong 40 năm – lomec

0

Trên thực tế nhờ cho @Viraj cho câu trả lời.

Google hiện bị phản đối ở trên và bạn nên sử dụng này để thay thế:

webView.loadData(URLEncoder.encode(mAdvertisement.getContent(), "UTF-8").replaceAll("\\+", " "), "text/html", "UTF-8"); 
Các vấn đề liên quan