目前公司APP,android 7+ 打开pdf文件时会出现闪退,模拟器跑报错:详细错误内容是因为https://developer.android.com/about/versions/nougat/android-7.0-changes?hl=zh-cn
android 7+文件目录打开方式变更:
对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。
要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。如需了解有关权限和共享文件的详细信息,请参阅共享文件。
所以升级文件相关插件 cordova-plugin-file-transfer 、cordova-plugin-file,inappbrowser ,原来pdf打开方式是使用inappbrowser :window.open(path, "_system");但是没发现inappbrowser 对android7有支持,更新inappbrowser 后,只是打开pdf不再闪退,但是文件始终打开不成功。
所以我增加插件cordova-plugin-file-opener2,使用它打开PDF。
同时文件目录修改为cdvfile://方式。有cdvfile协议去处理android 7+ file://的问题,以下为目前插件版本:
<plugin name="cordova-plugin-whitelist" spec="1"/>
<plugin name="cordova-plugin-splashscreen" spec="~5.0.1"/>
<plugin name="cordova-plugin-camera" spec="~2.2.0"/>
<plugin name="com.distinctclinic.weixin" spec="file:com.distinctclinic.weixin"/>
<plugin name="cordova-plugin-inappbrowser" spec="^3.0.0"/>
<plugin name="cordova-plugin-http" spec="^1.2.0"/>
<plugin name="cordova-plugin-compat" spec="^1.2.0"/>
<plugin name="cordova-plugin-file-transfer" spec="^1.7.1"/>
<plugin name="cordova-plugin-media" spec="git+https://github.com/apache/cordova-plugin-media.git"/>
<plugin name="cordova-plugin-file" spec="^6.0.1"/>
<plugin name="cordova-plugin-file-opener2" spec="^2.0.19"/>
<engine name="ios" spec="^4.5.4"/>
<engine name="android" spec="^6.4.0"/>
网友评论