uniapp音频下载功能-安卓端
·
废话不多说,直接把代码端上来
counter.musicUrl为音频url,
counter.musicInfo.title为音频名称
// 下载音频
const download = () => {
plus.android.requestPermissions(
['android.permission.WRITE_EXTERNAL_STORAGE'],
(result) => {
if (result.deniedAlways.length > 0) {
uni.showModal({
title: '权限被拒绝',
content: '请前往设置->应用管理->权限中开启文件读写权限',
confirmText: '去设置'
}).then(res => {
if (res.confirm) {
const Intent = plus.android.importClass(
"android.content.Intent");
const Settings = plus.android.importClass(
"android.provider.Settings");
const Uri = plus.android.importClass(
"android.net.Uri");
const mainActivity = plus.android
.runtimeMainActivity();
const intent = new Intent();
intent.setAction(Settings
.ACTION_APPLICATION_DETAILS_SETTINGS);
const uri = Uri.fromParts("package", mainActivity
.getPackageName(),
null);
intent.setData(uri);
mainActivity.startActivity(intent);
}
});
} else if (result.granted.length > 0) {
uni.showToast({
title: '开始下载',
icon: 'none'
})
const extension = counter.musicUrl.split('.')
.pop();
console.log('extension', extension, `file://storage/emulated/0/Music/${counter.musicInfo.title}.${extension}`);
const safeName = sanitizeFilename(counter.musicInfo.title);
let dtask = plus.downloader.createDownload(counter.musicUrl, {
filename: `file://storage/emulated/0/Music/${safeName}.${extension}`
},
function (d, status) {
//d为下载的文件对象
if (status == 200) {
//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
let fileSaveUrl = plus.io
.convertLocalFileSystemURL(
d.filename);
console.log('fileSaveUrl',
fileSaveUrl);
const Context = plus.android
.importClass(
"android.content.Context"
);
const MediaScannerConnection =
plus.android
.importClass(
"android.media.MediaScannerConnection"
);
MediaScannerConnection
.scanFile(plus.android
.runtimeMainActivity(),
[fileSaveUrl],
["audio/mpeg"], null);
uni.showToast({
title: '音频下载成功,请到文件管理里面查看吧',
icon: 'none'
})
} else {
//下载失败
plus.downloader
.clear(); //清除下载任务
uni.showToast({
title: '音频下载失败,请重试',
icon: 'none'
})
}
visibleDetail.value = false
})
dtask.start();
}
},
(err) => {
uni.showToast({
title: '权限被拒绝,无法保存文件',
icon: 'none'
});
}
);
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)