作为一款app,下载文件打开功能在某些场景下还是非常有必要的在ionic中使用cordova-plugin-file-transfer和cordova-plugin-file-opener2这两个插件可以很方便的实现这个功能。1、安装:cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-file-opener22、代码实现angular.module("app").controller("accessoryDe??tailCtrl",["$scope","$ionicLoading",function($scope$ionicLoading){"usestrict";$scope.downLoadFile=(downloadUrl)=>{letfileTransfer=newFileTransfer(),uri=encodeURI(downloadUrl),//文件地址链接fileUrl=cordova.file.dataDirectory+uri.substr(uri.lastIndexOf("/")+1);//文件下载地址fileTransfer.download(uri,fileUrl,entry=>{entry.file(data=>{cordova.plugins.fileOpener2.showOpenWithDialog(fileURL,data.type);//showOpenWithDialog使用手机安装的程序打开下载的文件});console.log("下载附件成功。附件信息:"+JSON.stringify(entry));},error=>{console.error("下载附件失败。因为:"+JSON.stringify(error));});fileTransfer.onprogress=function(progresssEvent){//加载时加载提示constpercentFinished=99;让downloadProgress=Math.round((progressEvent.loaded/progressEvent.total)*$scope.percentage);$ionicLoading.show({template:"下载中"+downloadProgress+"%"});下载进度>完成百分比&&$ionicLoading.hide();};};}]);3.笔记文件传输不仅支持下载,还支持上传文件。注意下载地址,ios和android可以有不同的路径,可以找同一个路径,也可以单独处理,这里是cordova.file.data目录,ios和android使用file-opener2下载同一个路径,需要通过在mineType中,这个我们可以在file-transfer中得到file-opener2除了我们使用的showOpenWithDialog方法外,还有一个open方法可以调用手机自带的open函数,可以用来更新android版本,下载新版本并安装(以后有空再写,网上相关文档很多。)另外还有uninstall和appIsInstalled功能。如果他们没有在项目中使用,他们将不会被研究。最后,在android7和android8上使用文件传输插件需要特殊处理。详情请查看githubcordova-plugin-file-transfer
