PhoneGap(Android)删除目录

PhoneGap(Android)删除目录,android,cordova,Android,Cordova,我正在尝试使用Android上的PhoneGap删除目录及其内容: deleteDirectory = function deleteDirectory(uri) { uri = uri.substring(0, uri.lastIndexOf('/')); return $.Deferred(function (def) { fileSystem.root.getDirectory(uri, { create: false

我正在尝试使用Android上的
PhoneGap
删除目录及其内容:

deleteDirectory = function deleteDirectory(uri) {
    uri = uri.substring(0, uri.lastIndexOf('/'));
    return $.Deferred(function (def) {
        fileSystem.root.getDirectory(uri, {
            create: false
        }, function (directory) {
            directory.removeRecursively();
            def.resolve();
        }, function (error) {
            resolveError("Error deleting directory: ", error, def);
        });
    }).promise();
}
出现以下错误:
文件不允许修改错误

我已确认此权限已设置:

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


我还应该去哪里寻找呢?

我已经用这种方法完成了:



    function ClearDirectory() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
        function fail(evt) {
            alert("FILE SYSTEM FAILURE" + evt.target.error.code);
        }
        function onFileSystemSuccess(fileSystem) {
            fileSystem.root.getDirectory(
                 "yours/dir/ect/ory",
                {create : true, exclusive : false},
                function(entry) {
                entry.removeRecursively(function() {
                    console.log("Remove Recursively Succeeded");
                }, fail);
            }, fail);
        }
    }

由此:

如果您想访问,我建议使用resolveLocalFileSystemURL cordova.file.*下的位置(例如cordova.file.dataDirectory),其中 大多数情况下(如果不总是),如果需要,请使用requestFileSystem 需要访问文件系统的根目录

这也节省了一些代码行,并且可读性更强:

deleteFolder(fileName: string) {
    const uri = `${cordova.file.dataDirectory}${fileName}`;
    window.resolveLocalFileSystemURL(uri, (dirEntry: DirectoryEntry) => {
        dirEntry.removeRecursively(
            () => console.log('successfully deleted the folder and its content'),
            e => console.error('there was an error deleting the directory', e.toString())
        )
    });
}
这是一个值得期待的版本:

deleteFolder(fileName: string): Promise<void> {
    const promise = new Promise<void>((resolve, reject) => {
        const uri = `${cordova.file.dataDirectory}${fileName}`;
        window.resolveLocalFileSystemURL(uri, (dirEntry: DirectoryEntry) => {
            dirEntry.removeRecursively(() => resolve(), e => reject(e));
        }, e => reject(e));
    });
    return promise;
}
deleteFolder(文件名:string):承诺{
持续承诺=新承诺((解决、拒绝)=>{
常量uri=`${cordova.file.dataDirectory}${fileName}`;
resolveLocalFileSystemURL(uri,(dirEntry:DirectoryEntry)=>{
dirEntry.removersively(()=>resolve(),e=>reject(e));
},e=>拒绝(e));
});
回报承诺;
}

您要删除的目录是什么?它是在sd卡上还是在内部存储器上?在Nexus 7的下载文件夹中添加了一个子文件夹:
file:///storage/sdcard0/Download/somedir/dirtodelete
我想这将被视为内部存储,因此
写入外部存储将不起作用。。。将添加
WRITE\u INTERNAL\u STORAGE
以查看是否就是这样。WRITE\u INTERNAL\u STORAGE似乎也不起作用。您不是第一个抱怨Nexus 7异常行为的人。我得看看是否有人可以运行测试套件。