我正试图在Cordova6.5.0上使用Cordova插件媒体录制音频。当我运行该方法时,它将我返回为“OK”,并调用成功回调函数,但是当该函数试图获取文件时,文件不存在。
如果我只指定文件名,则该文件位于/storage/emulated/0/filename.mp3,但应用程序无法访问此路径。因此,当我指定使用cordova.file.cachedirectory作为引用进行保存时,它会在后台触发一个错误,但在javascript接口中,它仍然调用success回调函数。
我看了一下Logcat,发现了这样的东西:
E音频播放器:
将/storage/emulated/0/tmprecording-1489806941198.3gp重命名为/data/user/0/com.app/cache/recordeddata-23-58cca65df12bf.mp3失败
我一直在网上搜索,我发现与Cordova3.5.0类似的错误是一个bug,但我使用的是Cordova6.5.0,这个bug还会发生吗?
此外,我已经检查了应用程序的权限,所有需要的权限都已授予。例如:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我试过用cordova.file.datadirectory代替cordova.file.cachedirectory,但仍然没有成功。
下面是一段代码:
 audioCtx = new Media(
            cordova.file.cacheDirectory + currentMediaFile,
            uploadMediaCapture
        );
        //console.log("Recording audio.");
        audioCtx.startRecord();

有人知道怎么解决这个问题吗?

最佳答案

android无法将文件从/storage移动到/data
愚蠢的是,如果无法移动文件,movefile方法不会返回false,因此仍然调用success回调。
所以解决方案是用cordova.file.externalcachedirectory或cordova.file.externaldatadirectory替换cordova.file.cachedirectory

关于javascript - Cordova 6.5.0无法使用Cordova插件媒体FAILED重命名/storage/emulated/0/tmprecording-1489806941198.3gp录制音频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42870171/

10-10 18:04
查看更多