废话不多说,直接把代码端上来 

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'
				});
			}
		);
	}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐