【问题标题】:Phonegap camera take a picturePhonegap相机拍照
【发布时间】:2012-07-13 10:58:33
【问题描述】:

我正在为我的移动网站添加一些特定于移动应用的功能。目前,该应用程序或多或少只是一个包装器。

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);
});

【问题讨论】:

  • 您是将Phonegap 用于网站还是作为移动应用程序?如果是后者,您正在开发什么平台?这很重要,因为有时您必须明确允许在应用程序中加载外部数据。在 iOS 中,可以在 URL 类型下的 Appname-Info.plist 中指定这一点。另外,我认为您的问题标题与实际问题不符。

标签: java javascript cordova


【解决方案1】:

由于浏览器跨域安全,您的远程加载站点无法访问本地资源。这是一个旧线程,但解释了一些原因。

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

【讨论】:

    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多