Neeraj Mishra
Neeraj Mishra

Reputation: 3

Directory is not creating but code is running successfully in Phonegap

Directory not created in sd card but below code runs successfully in my android mobile & when I open the desired location then no folder exists, I've also gone through earlier posts but it doesn't solved my issue.I've also appled all permissions but it didn't works.Please help me to solve this issue & thanx in advance.

 function capturePhoto(){  
// Take picture using device camera and retrieve image as base 64-encoded string
navigator.camera.getPicture( onPhotoDataSuccess, onFail, {quality:100,destinationType:Camera.DestinationType.FILE_URI});
}
var imageForCategory="";
function onPhotoDataSuccess(imageData) { 

  // Uncomment to view the base64-encoded image data
   alert("imageData "+imageData);  
  // Get image handle

  var smallImage = document.getElementById('smallImage');
  // Unhide image elements
  smallImage.style.display = 'block';
  // Show the captured photo
  // The in-line CSS rules are used to resize the image


  smallImage.src = imageData;
  imageForCategory=smallImage.src;


}
function onFail(message) {
  alert('Failed because: ' + message);
}
function getPhoto(source) { 
  // Retrieve image file location from specified source
  navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 100,destinationType: destinationType.FILE_URI,
  sourceType: source });
}

function onPhotoURISuccess(imageURI) { 
  // Uncomment to view the image file URI
   alert(imageURI);

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

  // Unhide image elements
  //
  largeImage.style.display = 'block';

  // Show the captured photo
  // The in-line CSS rules are used to resize the image
  //
  largeImage.src = imageURI;
  imageForCategory=largeImage.src;
 // i++;    // for image data array to get array of images to be uploaded
}

function saveAsset()
{  

if(imageForCategory!=""){  alert("imageForCategory : "+imageForCategory);
     window.resolveLocalFileSystemURL(imageForCategory,resolveOnSuccess,resOnError); 
 }
 else{ 
    db = window.openDatabase("finnAssistDB", "1.0", "finnAssist", 200000);
        db.transaction(function(tx){
            saveAssetSQL(tx,"");
        }, transaction_error);

 }

}
 function resOnError(error) {
alert('Error at resOnError :'+error.code+' ,message :'+error.message);
}
function resolveOnSuccess(fileSystem)
{  
 alert("fileSystem name : "+fileSystem.name);

var d = new Date();
var n = d.getTime();
var newFileName = n + ".jpg";

var myFolderApp = "Android/data/com.acme.assetPlus/files/neeraj";
var newFile=myFolderApp+"/"+newFileName;

window.requestFileSystem(LocalFileSystem.PERSISTENT,0, function(fileSys) { 
alert("fileSys name "+fileSys.name); 
alert("fileSys.root.fullPath "+fileSys.root.toURL()); // displays "path of directory" 
alert("fileSys getParent : "+fileSys.root.getParent); // displays the parent

fileSys.root.getDirectory(myFolderApp,{create:true, exclusive: false},
                function(directory)
                {       alert("directory name : "+directory.name);   

               /* fileSystem.copyTo(directory, newFileName,function(fileSystem)*/
                fileSystem.moveTo(directory,newFileName,function(fileSystem)
                        { alert("fileSystem "+fileSystem);
                        db = window.openDatabase("finnAssistDB", "1.0", "finnAssist", 2000000);
                        db.transaction(function(tx){
                            saveAssetSQL(tx,newFile);
                        }, transaction_error);
                    }, resOnError);
                },resOnError); 
                },resOnError); 

}

Upvotes: 0

Views: 230

Answers (1)

Mohammed Imran N
Mohammed Imran N

Reputation: 1319

You have mentioned this location.

var myFolderApp = "Android/data/com.acme.assetPlus/files/neeraj"; But you haven't mentioned Internal Storage(App Storage) or External Storage

By default, Android will consider Internal Storage.

By your code, the image folder is created in data/data/yourpackagename/Android/data/com.acme.assetPlus/files/neeraj

To save in External Storage, please add this line in config.xml

<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="sdcard,cache" />

Additionally in AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Upvotes: 1

Related Questions