opener2插件用来在强制升级中打开下载到本地的apk,中间坑多多,下面来捋一捋。首先是安装命令
ionic cordova plugin add cordova-plugin-file-opener2
npm install --save @ionic-native/file-opener
安装完成后,重新添加android平台然后报错了,报错原因是因为这句话,默认下载最新的support-v4,和本地环境有冲突。所以添加android平台之前,要先找到插件中的这句话删除。如果加了android平台,找到本地文件手动删除吧。
但这只是第一个坑,ionic项目在android8上面不会自动去请求文件权限,并且拿到权限后打开文件也会有问题。
先加一个请求权限的插件,命令如下:
ionic cordova plugin add cordova-plugin-android-permissions
npm install --save @ionic-native/android-permissions
然后写文件读取请求,注意文件读写是分开请求的,都要写上,记得之前只写一个另一个会默认申请。
/*检查是否有写入权限*/
check() {
//检查权限
var permissions = cordova.plugins.permissions;
permissions.checkPermission(permissions.WRITE_EXTERNAL_STORAGE, function (s) {
//hasPermission 验证是否成功
if (!s.hasPermission) {
//没有权限,app申请写入权限
permissions.requestPermissions([permissions.WRITE_EXTERNAL_STORAGE, permissions.READ_EXTERNAL_STORAGE], function (s) {
if (s.hasPermission) {
//申请成功
}
else {
//申请失败
console.log("申请写入失败1")
}
}, function (error) {
console.log("申请写入失败2")
});
} else {
//拥有权限
}
}, function (error) {
});
}
文件权限有了以后,还会有问题。打开文件会失败,或者自动安装apk的时候会安装完成无法打开。加上targetSDK的SDK版本为23,即只支持到Android6。参考网址:http://www.cnblogs.com/wupeng88/p/8567958.html
如果以上没有解决问题,插件还有个地方需要手动改一下, intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//自己加的,不加此句安装成功后不会自动打开安装成功后界面。