Cordova 6.5.0 使用cordova插件媒体录制音频失败重命名/storage/emulated/0/tmpr



我正在尝试在 Cordova 6.5.0 上使用cordova-plugin-media录制音频。当我运行该方法时,它返回我为"OK"并调用成功回调函数,但是当此函数尝试获取文件时,该文件不存在。

如果我只指定文件名,则文件位于/storage/emulated/0/filename.mp3但应用程序无法访问此路径。因此,当我指定使用cordova.file.cacheDirectory作为引用进行保存时,它会在后台触发错误,但在 javascript 界面中,它仍然调用成功回调函数。

看看logcat,我发现了这样的东西:

E 音频播放器: 将/storage/emulated/0/tmprecording-1489806941198.3gp 重命名为/data/user/0/com.app/cache/recordedData-23-58cca65df12bf.mp3

我一直在互联网上搜索,我发现与 Cordova 3.5.0 相关的类似错误是一个错误,但我使用的是 Cordova 6.5.0,错误可能还在发生吗?

此外,我已经检查了应用程序的权限,并且已经授予了所有需要的权限。例如:

<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.cacheDirectory替换为cordova.file.externalCacheDirectory或cordova.file.externalDataDirectory

最新更新