版本信息:
科尔多瓦版本12.0.0
cordova-plugin-wkwebview-file-xhr 版本 3.1.1
Android 目标 SDK = 34
问题/疑问:
我正在努力让基于 Cordova 的应用程序播放下载到 Android 设备的“内部存储/音乐”位置的文件。下面的 downloadAudio 函数可以正常工作,将文件保存在那里(尽管文件插件文档指出该位置是 SD 卡,但这不是它在我的设备上的工作方式)。
对我不起作用,也不适合
的示例https://cordova.apache.org/docs/en/2.4.0/cordova/file/fileentry/fileentry.html.
我没有收到任何与权限相关的错误。如果是权限问题,我认为下载将无法进行(?)我知道 Android 权限发生了变化。
任何帮助将不胜感激!
function downloadAudio (fileTransferWebUrl,thisElement) {
fileTransferWebUrl = encodeURI(fileTransferWebUrl);
if (isAndroidApp == true) {
var fileNameMP3Array = fileTransferWebUrl.split("/");
var fileNameMP3 = fileNameMP3Array[fileNameMP3Array.length-1]; //get file name from web URL
fileTransferInternalUrl = cordova.file.externalRootDirectory + 'Music/' + fileNameMP3; // file:///storage/emulated/0/Music/[file].mp3
}
try {
fileTransfer.download(
fileTransferWebUrl,
fileTransferInternalUrl,
function (entry) {
alert('Download complete to Music/' + fileNameMP3);
},
function(error){ //error
alert("Download error source " + error.source + " download error target " + error.target + " download error code " + error.code + " http_status " + error.http_status + " body " + error.body + " exception " + error.exception);
},
true, //trust all hosts. safer to be false, set to true accepts all security certificates, not recommended for production use
);
}
catch (e) {
alert(e);
}
}
function playDownloadedAudio (fileTransferWebUrl, thisElement) {
var nativePath = "";
fileTransferWebUrl = encodeURI(fileTransferWebUrl);
if (isAndroidApp == true) {
var fileNameMP3Array = fileTransferWebUrl.split("/");
var fileNameMP3 = fileNameMP3Array[fileNameMP3Array.length-1]; //get file name from web URL
fileTransferInternalUrl = cordova.file.externalRootDirectory + 'Music/' + fileNameMP3; //cordova.file.externalRootDirectory
alert(fileTransferInternalUrl); // file:///storage/emulated/0/Music/A_casa_vete_y_cuenta_alli.mp3
}
try {
nativePath = fileTransferInternalUrl; // how do I get this into a path Media plugin recognizes?
my_media = new Media(nativePath,
function () //success;
{ },
function (err) //error
{
alertOK(translate('Error in playback. Please contact support. \n Code: ','text') + error.code + '\n '+translate('Message:','text')+' '+error.message + '\n');
playing = false;
}
);
my_media.play();
}
catch (e) {
alert("error: " + e);
}
}