6

WebViewを使用してRSSフィードから解析されたHTMLデータを読み込もうとしていますが、WebViewは次のページを要求しています。

"data:text / html; utf-8、[表示しようとしているhtml]"

利用できません。

代替テキスト

表示したいだけなのに、htmlデータをURLに入れているように見えるのは不思議です。

これが今のウェブビューの私のコードです:

Bundle data = getIntent().getExtras();

WebView webview = new WebView(this);
setContentView(webview);

webview.loadData(data.getString("DEFAULTTEXT"), "text/html", "utf-8");

HTMLがバンドル内の文字列で識別子DEFAULTTEXTで渡された場合。クラスをテストしましたが、HTMLは正常に渡されましたが、正しく表示されません。

私が試したいくつかのWebページでは正常に機能しますが、他のWebページでは機能しません。動作するコードと動作しないコードを投稿してみます。

4

4 に答える 4

3

ふぅ…今朝、パソコンの電源を入れると完璧に動きました。何が問題だったのかはまだわかりません。:/

編集:気にしないでください。一部のページでは機能しますが、表示しようとしているすべてのページでは機能しません。

Edit2: loadDataWithBaseURL に交換するのは魅力的でした。

于 2010-01-01T17:16:49.367 に答える
2

前述のように、HTML に '%'、'\'、'#' などの文字がある場合、それをエスケープする必要がありますが、これは loadData が自動的に行うようには見えません。

loadDataの代わりに loadDataWithBaseURL がエスケープし、これを修正するようです。baseUrl と historyUrl に null を使用するだけです。したがって、質問のサンプルコードは次のように変更されます。

Bundle data = getIntent().getExtras();

WebView webview = new WebView(this);
setContentView(webview);

webview.loadDataWithBaseURL(null,data.getString("DEFAULTTEXT"), "text/html", "utf-8",null);
于 2012-08-12T22:47:24.983 に答える
1

loadData *のこの散発的な動作は、ロードしようとしているページのコンテンツが原因であると思います。単純なHTMLであれば問題ありません。ただし、cssや外部情報を必要とするその他の機能などのコンポーネントがある場合は、解決されます。私の経験!

于 2010-09-27T08:07:37.520 に答える
0

manifest.xml で正しい権限が定義されていますか?

于 2010-01-01T16:39:04.687 に答える