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

如何解决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 平台后,它不再工作了。

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

非常感谢。

使用的版本: cordova@10.0.0、cordova-android@9.0.0、cordova-plugin-media-capture@3.0.3、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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?