公開されているアプリのAndroidバージョン3では内部リンクが動作していないようです。私のアプリはこの時点でFroyoをターゲットにしています。ハニカムアプリで基本的な内部リンクが機能しないのですか?
アプリは大量の電話機で正常に動作しますが、新しいギャラクシータブでは内部リンクを処理できません。これは、htmlページ、すなわち内でそれらを処理することができます:
<a href="#faq">Go to faq</a> <!-- goes to FAQ link -->
は、同じページに下のタグに移動します:
<a name="faq" id="faq"></a>
しかし、別のHTMLファイルから、インデックスページ、リンクがない。すなわち長いハニカムで動作します。私は内部リンクに行けば、また
<a href="mainpage.html#faq">FAQ</a> <!-- goes to error page -->
をし、そこから別のページへのリンクをたどって、その後、バックボタンを押し、あなたが(以前のWebViewのページに移動するにはオーバーライドされます)同じエラーが発生する:
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! webviewはちょうどそのページにありましたが、1秒後にヒットし、それを見つけることができません。また、それは別のHTMLページからリンクしますが、それはすべての(3.0を試していない)の1.x、2.xの、だけではない3.1で
NOTEを正常に動作することができます:私はこのほぼ同じ質問見てきました: android_asset not working on Honeycomb? をしかし、私の資産経路にはスペースがありません。
私はwebclientを使用して試してみましたが、DOMとキャッシュの設定を無駄に試しました。ここで私は、現在の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");
あなたが見つけた私は、同じ問題を抱えています解決策?このサイトは類似のものについて話しているようです:http://www.droidnova.com/honeycomb-webview-changes-and-issues,876.htmlしかし、それは解決策を提供しません... –
数ヶ月後、私はまだ解決策がありませんこれは、3.x OSを検出し、URLから内部リンクを切断する以外の方法です。機能は妨げられますが、根本的なエラーを回避します。 – Mischa
私は現在、ほぼ透明な回避策として次のことを行っています。 URLが失敗したときに起動するonReceivedErrorでは、gingerbreadの上にあるosを検出し、内部リンクを切断して基本WebページURLを取得します。私はそれをwebviewにロードし、1/2秒間スリープの遅延を行います。私はそれから内部のリンクとvoilaと元のfailedURLを読み込みます、それは今ロードします。明らかに、ブラウザはリンクが存在する前にそのリンクにアクセスしようとする古典的な間違いを犯しているようです。誰かがこのバグについてもっと知っているならば、私はすべて耳です! – Mischa