1

ローカルの Ajax リクエストを介して PhoneGap アプリにコンテンツを読み込もうとしています。iPhone では問題なく動作するようですが、Android ではファイルが見つかりません。

こんなふうになります:

Ext.Ajax.request({
        url: 'file:///android_asset/webapp/content/file.html',
        success: function(response, opts) {
            console.log('response ' + response.responseText);
        }
        failure: function(response, opts) {
            console.log('response ' + response.responseText);
        }
    });

私はすでにマニフェストを調整し、インターネット許可を設定しましたが、まだ成功していません。

何か考えはありますか?

4

3 に答える 3

0

これが完全に要件を満たしているかどうかはわかりませんが、このPhonegapAndroidプラグインコレクションをご覧ください。AndroidでPhoneGapのコンテンツをアップロードおよびダウンロードするためのプラグインが含まれています。

于 2012-05-30T10:03:04.840 に答える
0

このような状況で私が最初に行うことは、SenchaやjQueryなどのサードパーティライブラリへの依存を取り除き、XHRを直接使用することです。ファイルプロトコルからリクエストを行うと、実際には200であるのにステータス0が返されることがあるという問題があります。ほとんどのライブラリではこれが修正されていますが、わかりません。このXHRコードを試してみてください。これは、Androidでうまく機能するはずです。

var request = new XMLHttpRequest();
    request.open("GET", "file:///android_asset/webapp/content/file.html", true);
    request.onreadystatechange = function(){
        if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
                console.log("response " + request.responseText);
            }
        }
    }
    request.send();
于 2012-05-30T14:59:10.143 に答える
0

Sencha Touch のどのバージョンを使用していますか? Simon が指摘したように、多くのライブラリは応答コード 0 に遭遇すると失敗を報告しますが、Sencha Touch はこれを 2.0.0 で修正しました。

http://www.sencha.com/forum/showthread.php?173577-Ext.data.Connection-fails-when-evaluating-a-file-protocol-s-status

2 番目に、ULR の file:///android_asset/webapp/ 部分を削除してみてください。コンテンツ ディレクトリへの相対 URL は問題なく機能し、そのパスに到達するために行っている可能性のある OS 検出の切り替えを軽減します。

Ext.Ajax.request({
    url: 'content/file.html',
    success: function(response, opts) {
        console.log('response ' + response.responseText);
    }
    failure: function(response, opts) {
        console.log('response ' + response.responseText);
    }
});
于 2012-05-30T20:51:17.033 に答える