如何解决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 举报,一经查实,本站将立刻删除。