cordova打包项目后,使用cordova-plugin-file cordova-plugin-file-transfer cordova-plugin-file-opener2插件结合进行版本管理,在Android8.0及以上版本更新下载后,不能安装APP
别着急,cordova-plugin-file-opener2官方文档已经给出了说明。以下是官方文档原文
原因
由官方文档给出的说明,我们可以看出: cordova-plugin-file-opener2插件在使用的过程中存在两种限制条件
android apk 文件安装限制条件
- APK 权限限制:在Android 8+ 的设备上,您的应用程序必须具有“安装”操作包权限。
- 在Android7之前,您只能从外部分区安装APK。例如,您可以从cordova.file.externalDataDirectory安装程序,但是不能从cordova.file.dataDirectory安装程序。 Android 7+没有这个限制。
android 上的sdk卡限制
在Android上使用这个插件并不能保证打开sdk卡(外部存储卡)上的文件。这是因为底层Android库不支持从辅助外部存储设备读取文件。您的SDk卡是否被视为辅助外部设备取决于您所持有的手机本身设置。
解决方案
- cordova-plugin-file 操作文件时将APK文件下载(保存)到 cordova.file.externalDataDirectory对应的目录下
- 尽量不要调用sdk文件路径
- 给程序授予安装操作包权限(修改config.xml)
<platform name="android">
<config-file parent="/manifest" target="AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
</config-file>
</platform>