ローカルのhtmlファイルを(アセットフォルダーから)アプリWebViewにロードします。 HTMLでは、jQuery.getJSON(url)を実行します。 URLはリモートサーバーです。
このアクションは失敗し、Originの問題(ドメイン間)が異なるために推測しています。同じファイルをchromeで実行すると、そこに具体的に記述されています。
AndroidのWebViewがローカルにロードされたHTMLファイルのリモートサーバーからデータをロードできるようにする方法はありますか?
今日の朝、私は働いているように見える解決策を見つけました。
WebViewの初期化:
WebView _webView = (WebView) this.findViewById(R.id.id_of_your_webview_in_layout);
WebView設定を取得:
WebSettings settings = _webView.getSettings();
次の設定を設定します:
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule
settings.setAllowUniversalAccessFromFileURLs(true);
これで、標準的な方法でHTMLファイルをロードできます:
_webView.loadUrl("file:///Android_asset/www/index.html");
標準的な方法でXHRリクエストを作成
var xhr = new XMLHttpRequest();
xhr.open("get", "http://google.com", false);
xhr.send();
結果をどこかに印刷する
document.body.innerHTML = xhr.responseText
注意:この手順は、APIレベル16以上でのみ動作します(少なくともドキュメントにはそれが記載されています)。
マニフェストファイルにインターネットアクセス許可を追加することを忘れないでください。
<uses-permission Android:name="Android.permission.INTERNET"/>
また、JSONPリクエストを使用していることを確認してください(上記のように&callback =?を忘れないでください)
ローカルのhtmlファイルを(アセットフォルダーから)アプリWebViewにロードします
あなたがこれをどのように行っているかを言っていないことに注意してください。 _file:///Android_asset
_ URLのloadUrl()
によるものと推測します。
AndroidのWebViewがローカルにロードされたHTMLファイルのリモートサーバーからデータをロードできるようにする方法はありますか?
loadDataWithBaseURL()
を使用してコンテンツをロードし、リモートサーバー上のURLをベースURLとして指定してみてください。
使用したソリューションは、Androidを使用してサーバーから更新ファイルを取得し、それらを配置してWebフォルダー内のファイルを上書きしてから参照することでした。
Ajax呼び出しは、ローカルファイルシステムからは機能しません。さらに、クロスドメインになります。だからうまくいきません。ローカルサーバーから試したため、Eclipseで機能しました。