0

モバイル アプリ固有の機能をモバイル Web サイトに追加する作業を行っています。現在、アプリは多かれ少なかれ単なるラッパーです。

public class Activity extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.main);
        if (this.isOnline()) {
            super.loadUrl("http://mysite.com");
        } else {
            super.loadUrl("file:///android_asset/www/offline.html");
        }
    }

    public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }
}

問題は、次の javascript で発生します。super.loadUrl("http://mysite.com"); を置き換えると super.loadUrl("file:///android_asset/www/online.html") を使用して、そこで次の javascript を実行すると、正常に動作します。しかし、mysite.com で実行すると、次の例外がスローされ続けます。

07-13 12:25:12.762: E/Web コンソール (28251): ローカル リソースの読み込みが許可されていません: file:///data/data/com.my.app/.Pic.jpg?1342171460960 at null:0

私が間違っていることについて何か考えはありますか?

 var camera = (function(){

        var camera = {
            settings : {
                quality: 50, 
            }
        };

        var error = function(message) {
            console.error("Error happened while trying to get a picture", message);
        };

        document.addEventListener("deviceready", function() {

            camera.settings.destinationType = navigator.camera.DestinationType.FILE_URI;    

            camera.fromPhone = function() {
                this.settings.sourceType = navigator.camera.PictureSourceType.CAMERA;
                return this;
            };

            camera.fromLibrary = function() {
                this.settings.sourceType = navigator.camera.PictureSourceType.PHOTOLIBRARY;
                return this;
            };

            camera.get  = function(callback) {
                navigator.camera.getPicture(callback, error, camera.settings);
            };

        }, false);


        return camera;

 })();

//Later, at a click event
camera.fromPhone().get(function(imageURI){
    alert("imageURI" + imageURI)
    $("#largeImage").attr("src", imageURI);
});
4

1 に答える 1

2

ブラウザのクロス ドメイン セキュリティが原因で、リモートでロードされたサイトがローカル リソースにアクセスできません。これは古いスレッドですが、いくつかの理由を説明しています。

https://lists.webkit.org/pipermail/webkit-dev/2009-May/007658.html

于 2012-07-13T18:10:54.873 に答える