cordova.file在android的ionic项目中未定义

cordova.file is undefined in ionic project for android

本文关键字:项目 未定义 ionic file android cordova      更新时间:2023-09-26

我正在尝试为android构建一个ionic app。我需要从我正在使用ngcordova plugin的SD卡中读取一个文件。我在app.js中的角度模块中需要ngCordova我在index.html中的cordova.js之前注入ngcordova。使用安装

cordova插件添加cordova插件文件

我在控制器中注入了$cordovaFile

每当我尝试使用以下代码读取文件时,我都会收到错误cannot read property externalDataDirectory of undefined

      $ionicPlatform.ready(function() {
            console.log('cordova.file.externalDataDirectory: ' + cordova.file.externalDataDirectory);
            myFsRootDirectory1 = 'file:///storage/emulated/0/'; // path for tablet
            myFsRootDirectory2 = 'file:///storage/sdcard0/'; // path for phone
            fileTransferDir = cordova.file.externalDataDirectory;
            if (fileTransferDir.indexOf(myFsRootDirectory1) === 0) {
                fileDir = fileTransferDir.replace(myFsRootDirectory1, '');
            }
            if (fileTransferDir.indexOf(myFsRootDirectory2) === 0) {
                fileDir = fileTransferDir.replace(myFsRootDirectory2, '');
            }
            console.log('Android FILETRANSFERDIR: ' + fileTransferDir);
            console.log('Android FILEDIR: ' + fileDir);
            $cordovaFile.readAsText(fileDir + 'a.csv').then(function(result) {
                    console.log('readAsText: ', result);
                    alert(result)
                })
                .catch(function(err) {
                    alert(err)
                });
        })

我也尝试过打印cordova,但它不包含文件对象

     $ionicPlatform.ready(function() {
        alert(angular.toJson(window.cordova))
    })

我也做过build cordova android删除并添加cordova plugin rm cordova-plugin-filecordova plugin add cordova-plugin-file

以下是版本:

"ionic": "driftyco/ionic-bower#1.3.1",
"ngCordova": "^0.1.27-alpha"

我正在设备上测试这个,每次都构建一个新的apk进行测试,而不是在webview中。

请帮我解决这个问题,或者如果你能给我推荐一种不同的方法来解决这个问题的话,那就太好了!

感谢您的回答

用任何额外的插件配置更新了config.xml文件,也许这可以解决您面临的问题。有关详细信息,请查看插件文档。

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

更多信息插件网站

更新-尝试以下

npm update -g
cordova -v
cordova platform list
cordova platform update ios (or whatever platforms)
cordova platform list
cordova plugin list
-- now either do a cordova plugin remove/add for each plugin to update
-- OR with ionic use ionic state reset and it will install all from package.json