Android 上的 Cordova 插件cordova-plugin-file 和cordova-plugin-media-capture 的FileReader FileError 错误代码1 NOT_FOUND_ERR误导

问题描述

我正在努力使用cordova为Android 10上的消息传递应用程序创建录音机。简单地说,我无法读取预先安装的录音机录制的文件

调用navigator.device.capture.captureAudio并允许存储权限后,弹出录音机,录制音频,提交后返回MediaFile保存在recorders文件 >.

如果我试图读取文件,但不知何故它弹出 FileError 代码为 1,这意味着 NOT_FOUND_ERR - 这不是真的,文件存在并且我有存储权限。我过去一直在处理这个问题,这段代码可以正常工作,但经过一段时间和多次重置 Android 平台后,它不再工作了。

是什么阻止我从另一个应用程序读取文件? (我是原生移动应用的新手)。

非常感谢。

使用的版本: [email protected][email protected][email protected]cordova-plugin-file@6.0.2

const INTERNAL_ERR = {
    code: 0,message: 'The microphone Failed to capture sound.',};

return new Promise((resolve,reject) => {
    navigator.device.capture.captureAudio(
        ([mediaFile]) => {
            console.log(mediaFile); // *1
            window.resolveLocalFileSystemURL(
                mediaFile.localURL,// using cdvfile url
                fileEntry => {
                    console.log(fileEntry); // *2
                    fileEntry.file(
                        file => {
                            const reader = new FileReader();
                            reader.onloadend = e => {
                                if (e.target.result) {
                                    resolve(e.target.result);
                                } else {
                                    reject(INTERNAL_ERR);
                                }
                            };
                            reader.onerror = e => console.error(e); // *3
                            reader.readAsDataURL(file);
                        },error => reject(INTERNAL_ERR)
                    );
                },error => reject(INTERNAL_ERR)
            );
        },error => reject(error),{ limit: 1,duration: 60,}
    );
}

从cordova-plugin-media-capture 创建MediaFile - console.log *1

MediaFile {name: "Voice 020.m4a",localURL: "cdvfile://localhost/persistent/Voice%20Recorder/Voice%20020.m4a",type: "audio/mpeg",lastModified: null,lastModifiedDate: 1612256449000,…}
    end: 0
    fullPath: "file:///storage/emulated/0/Voice%20Recorder/Voice%20020.m4a"
    lastModified: null
    lastModifiedDate: 1612256449000
    localURL: "cdvfile://localhost/persistent/Voice%20Recorder/Voice%20020.m4a"
    name: "Voice 020.m4a"
    size: 90812
    start: 0
    type: "audio/mpeg"

创建的 FileEntry - console.log *2

FileEntry {isFile: true,isDirectory: false,name: "Voice 020.m4a",fullPath: "/Voice Recorder/Voice 020.m4a",filesystem: FileSystem,…}
    filesystem: FileSystem
    name: "persistent"
    root: DirectoryEntry {isFile: false,isDirectory: true,name: "",fullPath: "/",…}
    fullPath: "/Voice Recorder/Voice 020.m4a"
    isDirectory: false
    isFile: true
    name: "Voice 020.m4a"
    nativeURL: "file:///storage/emulated/0/Voice%20Recorder/Voice%20020.m4a"

弹出事件 - console.error *3

ProgressEvent {type: "error",bubbles: false,cancelBubble: false,cancelable: false,lengthComputable: false,…}
target: FileReader
    _error: FileError
    code: 1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)