Các liên kết nội bộ dường như không hoạt động trong phiên bản Android 3 trong ứng dụng đã xuất bản của tôi. Ứng dụng của tôi nhắm mục tiêu Froyo tại thời điểm này.Các liên kết nội bộ cơ bản không hoạt động trong ứng dụng tổ ong?
Ứng dụng hoạt động tốt trên tấn điện thoại, nhưng Galaxy Tab mới của tôi không thể xử lý các liên kết nội bộ !! Nó có thể xử lý chúng trong một trang html, ví dụ:
<a href="#faq">Go to faq</a> <!-- goes to FAQ link -->
Chuyển sang thẻ thấp hơn trên cùng một trang:
<a name="faq" id="faq"></a>
Tuy nhiên từ một tập tin html khác, tức là trang danh mục, liên kết không còn hoạt động trong Honeycomb:
<a href="mainpage.html#faq">FAQ</a> <!-- goes to error page -->
Ngoài ra, nếu tôi đi đến một liên kết nội bộ, và từ đó theo một liên kết đến một trang khác, sau đó nhấn nút quay lại, (nó là ghi đè để đi đến trang webview trước) bạn nhận được cùng một lỗi tức là:
The webpage at file:///android_asset/folder/mainpage.html#faq might be temporarily down or it may have moved permanently to a new web address
WTF! Chế độ xem web đã ở trên trang nhưng bạn đã quay lại sau 1 giây và không thể tìm thấy nó. Cũng không phải nó có thể liên kết từ một trang html khác, nhưng tất cả đều hoạt động tốt trong 1.x, 2.x, chỉ không 3.1 (chưa thử 3.0)
LƯU Ý: Tôi đã thấy câu hỏi gần giống hệt này: android_asset not working on Honeycomb? Nhưng không có khoảng trống trong đường dẫn nội dung của tôi.
Tôi đã thử có và không có webclient và đã thử cài đặt DOM và bộ nhớ cache không có kết quả. Dưới đây là ví dụ về những gì tôi hiện có trong oncreate:
browser = new WebView(this);
// browser = (WebView) findViewById(R.id.webkit); // tried with XML and without
browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setPluginsEnabled(true);
// browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
// browser.getSettings().setUseWideViewPort(true);
browser.setBackgroundColor(Color.parseColor("#333333"));
browser.setInitialScale(1);
browser.getSettings().setBuiltInZoomControls(true);
final Activity MyActivity = this;
browser.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Make the bar disappear after URL is loaded, and changes
// string to Loading...
setProgressBarIndeterminateVisibility(true);
MyActivity.setTitle(" Loading . . . " + progress + "%");
MyActivity.setProgress(progress * 100); // Make the bar
if (progress == 100) {
setTitle(" APP TITLE YADA YADA");
setProgressBarIndeterminateVisibility(false);
}
}
});
browser.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
// Handle the error
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url); // note I tried with and without overriding this
return true;
}
});
setContentView(browser);
browser.loadUrl("file:///android_asset/folder/page.html");
Tôi đang gặp vấn đề tương tự, bạn đã bao giờ tìm thấy một dung dịch ? trang web này dường như nói về một cái gì đó tương tự: http://www.droidnova.com/honeycomb-webview-changes-and-issues,876.html, nhưng nó cung cấp không có giải pháp ... –
Vài tháng sau, tôi vẫn không có giải pháp cho điều này khác hơn là phát hiện 3.x OS và cắt liên kết nội bộ ra khỏi URL. Các chức năng bị cản trở, nhưng nó tránh được lỗi vô căn cứ. – Mischa
Tôi hiện đang làm như sau như một giải pháp gần như minh bạch. Trong onReceivedError, sẽ kích hoạt khi URL không thành công, tôi phát hiện bất kỳ hệ điều hành nào trên gừng và cắt liên kết bên trong để nhận URL trang web cơ bản. Sau đó tôi tải nó trong webview, và làm một giấc ngủ chậm trễ cho 1/2 một giây. Sau đó tôi tải failURL gốc với liên kết nội bộ và thì đấy, bây giờ nó tải. Rõ ràng là trình duyệt đang mắc lỗi kinh điển khi cố gắng truy cập liên kết trước khi nó tồn tại. Nếu có ai có thêm thông tin về lỗi này, tôi là tất cả tai! – Mischa