问题描述:下载文档pdf
解决步骤:
① 安装好ionic开发环境
② 安装相关插件
版本信息:cordova plugin addcordova-plugin-app-version 0.1.9
文件管理:cordova plugin addcordova-plugin-file 5.0.0
文件传输:cordova plugin addcordova-plugin-file-transfer 1.7.1
打开文件:cordova plugin addcordova-plugin-file-opener2 2.0.19
权限插件:cordova pluign add cordova-plugin-android-permissions 1.0.0
安装权限插件主要是因为Android8.0以上的版本有权限限制。
③相关代码:app.js
权限代码:
允许读写权限,打开之后可以下载并且打开pdf
function userDate(url, targetPath){
var permissions = cordova.plugins.permissions;
permissions.hasPermission(permissions.READ_EXTERNAL_STORAGE,checkPermissionCallback, null);
function checkPermissionCallback(status) {
if (!status.hasPermission) {
var errorCallback = function(){
console.log('Storagepermission is not turned on');
}
permissions.requestPermission(
permissions.READ_EXTERNAL_STORAGE,
function(status) {
if(!status.hasPermission) {
errorCallback();
} else {
// download_app();
download_app(url,targetPath)
}
},
errorCallback);
}else{
download_app(url, targetPath)
}
}
}
相关controller.js代码
$scope.open = function(){
//点击下载通过请求查看到pdf位置
$http.get('http://172.168.10.7:3000/api/v2/test_v2')
.then(function (result) {
var link = 'http://'+result.data.code
console.log(link)
check(link,"file:///storage/emulated/0/download/1234.pdf")
// check参数1 下载路经
//参数2 下载之后保存在手机上的名称
},function(e){
console.log(err)
})
}
//查看手机中是否有此文件,没有创建,有直接下载替换
function check(url, targetPath) {
$cordovaFile.checkDir("file:///storage/emulated/0/","download").then(function (success) {
download_app(url, targetPath);
}, function (error) {
//不存在则创建
$log.error('check dataDirectory');
$cordovaFile.createDir("file:///storage/emulated/0/","download", false)
.then(function (success) {
// success
download_app(url,targetPath);
}, function (error) {
// error
});
});
}
function download_app(url, targetPath){
$ionicLoading.show({
template: "正在下载"
});
$cordovaFileTransfer.download(url, targetPath, {}, true).then(function(result) {
// Success!
$ionicLoading.hide();
$cordovaToast.showShortCenter('下载完成');
// 下载完成之后直接打开
$cordovaFileOpener2.open(
targetPath,
'application/pdf'
).then(function () {
$cordovaToast.showShortCenter('打开');
}, function (e) {
alert('Error status: ' + e.status + ' - Errormessage: ' + e.message)
});
}, function (err) {
$ionicLoading.show({
template: "下载失败"
});
$ionicLoading.hide();
}, function (progress) {
var downloadProgress = (progress.loaded /progress.total) * 100;
if (downloadProgress > 99) {
$ionicLoading.hide();
}
});
}
Config.xml中platform name =”android”下
注:bug
[if !supportLists]a. [endif]安装插件之后,对应的ionic1版本的话,安装之后会造成不能打包,需要在安装插件时 file插件对应版本号安装,添加Android平台时需要cordova platform add android@6.3.0,
此时需要查看平台是否添加完整。
[if !supportLists]b. [endif]为了解决权限问题,添加权限之后需要在AndroidMifeat
固定版本号
权限查看
[if !supportLists]c. [endif]如果build时遇到transform…错 在Android平台下build.gradle
configurations.all {
resolutionStrategy {
force'com.android.support:support-v4:27.1.0'
}
}
def promptForReleaseKeyPassword()之前添加