Cordova TypeError: e.getFile не является функцией - PullRequest
0 голосов
/ 19 октября 2018

Используя Cordova File Plugin и Cordova Media Plugin, я записываю аудио фрагмент, который я пытаюсь сохранить и использовать в приложении.

Это прекрасно работает для iOS и некоторые устройства Android.Но на многих (особенно старых устройствах Samsung) обратный вызов успеха завершается неудачно после захвата аудиофрагмента.

Это соответствующая информация об ошибке с устройства Samsung:

temporary directory: file:///storage/emulated/0/Sounds/Spraak%20005.m4a
current file name: Spraak 005.m4a
move to this directory: file:///data/data/com.ctrl.appname/files/appname/recordings
new file name: opname_1539936956.m4a
cordova.js:309 Error in Success callbackId: File1062676118 : TypeError: e.getFile is not a function
cordova.js:311 Uncaught TypeError: e.getFile is not a function
    at ng-cordova.min.js:8
    at resolveLocalFileSystemURI.js:76
    at Object.require.getFs (fileSystems-roots.js:41)
    at success (resolveLocalFileSystemURI.js:70)
    at Object.callbackFromNative (cordova.js:291)
    at <anonymous>:1:9

Вот какмы перемещаем файл после его записи:

var rootDirectory = cordova.file.applicationStorageDirectory;
var recordingDirectory = "appname/recordings";
var filename = $scope.filename = 'opname_' + Math.floor(Date.now() / 1000);
var temp_dir = (ionic.Platform.isIOS()) ? cordova.file.tempDirectory : mediaFiles[i].fullPath.replace(mediaFiles[i].name, '');
var extension = mediaFiles[i].name.split('.')[1];

console.log('temporary directory: ' + temp_dir);
console.log('current file name: ' + mediaFiles[i].name);
console.log('move to this directory: ' + rootDirectory + recordingDirectory);
console.log('new file name: ' + filename + "." + extension);

$cordovaFile.moveFile(temp_dir, mediaFiles[i].name, rootDirectory + recordingDirectory, filename + "." + extension)
    .then(function () {
        database.add('Recordings', {0: filename, 1: 0}).then(function () {
        });
        $scope.entries.push({active: 0, name: filename});
        $scope.alertNameChange = true;
    }, function (error) {
        alert(error);
        console.dir(error);
    });

Кто-нибудь знает, почему это TypeError: e.getFile is not a function происходит на устройствах Samsung?Примечание. Устройства работают под управлением Android 5.0.1.Этот код отлично работает на Huawei с Android 8.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...