Cordova Android FileReader.readAsDataURL未找到\u错误

Cordova Android FileReader.readAsDataURL未找到\u错误,android,cordova,cordova-plugin-file,Android,Cordova,Cordova Plugin File,我正在使用cordova插件文件和cordova插件媒体捕获在iOS和Android上捕获视频。这个实现在iOS上运行得很好,但在Android上却不行。我将问题追溯到FileReader实例无法找到cordova plugin media capture录制的文件。以下是代码块: if (navigator && navigator.device.capture && window.cordova.file) { navigator.device.cap

我正在使用
cordova插件文件
cordova插件媒体捕获
在iOS和Android上捕获视频。这个实现在iOS上运行得很好,但在Android上却不行。我将问题追溯到
FileReader
实例无法找到
cordova plugin media capture
录制的文件。以下是代码块:

if (navigator && navigator.device.capture && window.cordova.file) {
    navigator.device.capture.captureVideo((mediaFiles: MediaFile[]) => {
        if (mediaFiles.length > 0) {
            const mediaFile = mediaFiles[0];
            const type = mediaFile.type;
            window.resolveLocalFileSystemURL((mediaFile as any).localURL, (fileEntry: Entry) => {
                (fileEntry as FileEntry).file((file: File) => {
                    // "file" is a valid file with a local URL (cdvfile://localhost/sdcard/DCIM/....)
                    const fileReader = new FileReader();
                    fileReader.onloadend = (event: ProgressEvent) => {
                        console.log(event);
                        // event.target.error = 1 here which according to the docs is NOT_FOUND_ERR
                        success({ data: (event.target as any).result, type });
                    };
                    fileReader.readAsDataURL(file);
                }, (_error: FileError) => {
                    console.log(_error);
                });
            }, (_error: FileError) => {
                console.log(_error);
            });
        }
    }, (_error: CaptureError) => {
        console.log(_error);
    }, { limit: 1, duration: 10, quality: 1 });
}
你知道是什么导致了这一切吗?以下是我尝试过的一些事情:

  • 添加到
    config.xml
    。此方法无效后删除
  • 添加到
    config.xml
    。在这不起作用后被移除
  • 确保CSP包括
    cdvfile:
  • 确保
    AndroidManifest.xml
    同时具有
    android.permission.WRITE\u EXTERNAL\u STORAGE
    android.permission.READ\u EXTERNAL\u STORAGE
  • 通过浏览“文件”应用程序,验证视频确实存在于手机上。视频播放得很好
  • 使用MotoG6在安卓8上进行测试


    提前感谢。

    在调试了
    cordova插件文件之后,我发现报告的
    未找到\u ERR
    有误导性,因为它证明存在权限问题

    我认为将读取外部存储的权限放在清单中就足够了,但事实并非如此。Android需要运行时权限:


    添加运行时权限后,视频捕获过程按预期工作

    在我的例子中,我还必须添加“requestLegacyExternalStorage”。例如:@a432511我添加了运行时权限,但运气不好……你是如何看到实际错误的?嘿,兄弟,你能帮我吗?如何添加运行时权限?嘿@Cesar,哦,朋友,谢谢你的成功!!!!太棒了,哈哈,我花了两天时间在这上面