在Cordova应用程序中拍照时错误5获取目录

时间:2016-11-11 11:19:00

标签: android cordova

我正在拍照,我想展示它们(它有效)并将它们保存在我的目录中。我跟随本论坛和w3c的混合回复来获取此代码。我的问题是当我获取fileSys目录时,它转到onError,它无法获取myFolderApp目录。监视器显示"

  

无法确保目录:   /storage/sdcard1/Android/data/tta.kirolapp.v1/files

  

无法确保目录:   /storage/sdcard1/Android/data/tta.kirolapp.v1/files

这是正常的,因为app默认目录是

  

/storage/emulated/0/0Android/data/tta.kirolapp.v1 /

所以,我认为这是问题,但我不知道如何解决它。 拍摄照片并进行管理的功能代码是下一个:

function capturePhoto() {
    alert('on capturePhoto');

    sessionStorage.removeItem('imagepath');
    //Cogemos la imagen y la codificamos en Base64
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, cameraDirection: 1, saveToPhotoAlbum:true, destinationType: Camera.DestinationType.FILE_URI });
}

function onPhotoDataSuccess(imageURI) { 
        // Uncomment to view the base64 encoded image data
        // console.log(imageData);

        // Get image handle
        //
        var imgProfile = document.getElementById('fotoRegistro');

        // Pasamos la imagen a pantalla desde imageURI
        //
        console.log('El url por defecto es: '+ imageURI);
        imgProfile.src = imageURI;
        if(sessionStorage.isprofileimage==1){
            getLocation();
        }
        movePic(imageURI);
}

// Funcion onError
// 
function onFail(message) {
    alert('Failed because: ' + message);
}

function movePic(file){ 
    window.resolveLocalFileSystemURL(file, resolveOnSuccess, resOnError); 
} 

//Callback function when the file system uri has been resolved
function resolveOnSuccess(entry){ 
    console.log("Estoy en resolveOnSuccess");
    var d = new Date();
    var n = d.getTime();
    //new file name
    var identificacion= $('#idEmailReg').val();
    var newFileName="foto"+identificacion+".jpg";
    console.log ('El newFileName es: '+ newFileName);
    var myFolderApp = "file:///storage/emulated/0/Android/data/tta.kirolapp.v1/img/";
        //appConstants.localPermanentStorageFolderImg;
    console.log ('El nuevo directorio es: '+ myFolderApp);
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys) {      
    console.log ('Entramos en el request onSuccess');
    //The folder is created if doesn't exist
    fileSys.root.getDirectory( myFolderApp,
                    {create:true, exclusive: false},
                    function(directory) {
                        console.log('El directory es: '+ directory);
                        entry.moveTo(directory, newFileName,  successMove, resOnError);
                    },
                    resOnError);
                    },
    resOnError);
}

//Callback function when the file has been moved successfully - inserting the complete path
function successMove(entry) {
    //Store imagepath in session for future use
    // like to store it in database

    sessionStorage.setItem('imagepath', entry.fullPath);
}

function resOnError(error) {
    alert(error.code);
}

resOnError显示代码" 5",监视器输出是下一个: enter image description here

1 个答案:

答案 0 :(得分:0)

我使用媒体插件并拍摄带照片的照片,这是代码:

function capturePhoto(){
    //var fileFolder="/storage/emulated/0/KirolApp/img/";
    var fileFolder=appConstants.localPermanentStorageFolderImg();
    var identificacion= $('#idEmailReg').val();
    var fileName="foto"+identificacion+".jpg";  
    photo.takeAsync(
        fileFolder,
        fileName,
        function() {
            console.log('En capturePhoto funcion');
            var urlCompleta=photo.fileFolder+photo.fileName;
            console.log('URL Completa: '+ urlCompleta);

            $("#fotoRegistro").attr("src","file://"+urlCompleta+"?"+(new Date()).getTime());
        }
    );
}

在我的objects.js文件中:

var photo = {
        fileFolder:null,
        fileName:null,
        takeAsync: function(fileFolder,fileName,onSuccess) {
            navigator.device.capture.captureImage(
                function(photoFiles) {
                    var tempFullPath=photoFiles[0].fullPath;
                    tempFullPath=tempFullPath.substring(tempFullPath.indexOf("/"));

                    alert("New photo in: "+tempFullPath);

                    fileUtilities.moveAsync(tempFullPath,fileFolder,fileName,
                        function() {
                            photo.fileFolder=fileFolder;
                            photo.fileName=fileName;
                            if(onSuccess!=false)
                                onSuccess();
                        }                           
                    );
                },
                function(error) {
                    var msgText = "Photo error: " + error.message + "(" + error.code + ")";
                    alert(msgText);
                }
            );
        }
};

和fileUtilities:

var fileUtilities = {
        moveAsync: function (sourceFullPath,destFolder,destName,onSuccess){
            var url="file://"+sourceFullPath;
            var destFile=destFolder+destName;
            var ft=new FileTransfer();
            ft.download(url,destFile,
                function() {
                    window.resolveLocalFileSystemURL(url,
                            function(fileEntry) {
                        fileEntry.remove(onSuccess);
                            },
                            function(error) {
                                alert("Source file NOT accesible; not removed");
                            }
                    );          
                },
                function(error) {
                    alert('File not copied. '+'error.code: '+error.code+'\nerror.source: '+error.source+'\nerror.target: '+error.target+'\nerror.http_status: '+error.http_status);
                }
            );
        }
};

感谢UPV / EHU的M.H和G.P。