Android 导出数据(脱机):保存和共享文件

Android 导出数据(脱机):保存和共享文件,android,cordova,cordova-plugin-file,Android,Cordova,Cordova Plugin File,我想提供一种方便的方法,从我的Cordova应用程序向用户备份数据。最吸引我的是,我的应用程序将所有数据备份到一个JSON文件中,然后让用户以与任何其他文件相同的方式保存/共享它 我已经将数据保存到一个真实的文件中并调用共享对话框,但该文件无法共享/保存。这可能是因为外部应用程序没有访问我的应用程序创建的文件的权限(GMail说:“附件的权限被拒绝”),而我不知道如何允许外部应用程序访问我的应用程序创建的文件。有什么想法吗 我的代码: ex = JSON.stringify(ex); wind

我想提供一种方便的方法,从我的Cordova应用程序向用户备份数据。最吸引我的是,我的应用程序将所有数据备份到一个JSON文件中,然后让用户以与任何其他文件相同的方式保存/共享它

我已经将数据保存到一个真实的文件中并调用共享对话框,但该文件无法共享/保存。这可能是因为外部应用程序没有访问我的应用程序创建的文件的权限(GMail说:“附件的权限被拒绝”),而我不知道如何允许外部应用程序访问我的应用程序创建的文件。有什么想法吗

我的代码:

ex = JSON.stringify(ex);

window.resolveLocalFileSystemURL('cdvfile://localhost/temporary/', function(dir)
{
    console.log('Directory resolved.');

    dir.getFile('MakeShift.json', {create: true, exclusive: false}, function(file)
    {
        console.log('Date file created.');

        file.createWriter(function (fileWriter)
        {
            fileWriter.onwriteend = function()
            {
                console.log('Data saved.');

                var time = Date.now();

                console.log(file); // typeof FileEntry

                window.plugins.socialsharing.shareWithOptions({
                    message: 'My MakeShift backup from '+time,
                    subject: 'MakeShift Backup '+time.yyyymmdd(),
                    files: [file.nativeURL],
                    chooserTitle: 'Choose how to save your data'
                },
                function(result)
                {
                    file.remove(function (file)
                    {
                        console.log('Data file removed.');
                    });
                });
            };

            fileWriter.onerror = function(e)
            {
                console.log('There was an error writing the data file.', e);
            };

            fileWriter.write(new Blob([ex], { type: 'application/json' }));
        });
    },
    function(err)
    {
        console.log('There was an error creating the data file.', err);
    });
});