背景:app各平台对隐私政策的监管越来越严格,app上线后,存在各种隐私协议的多次更新,每次更新都需要走发版流程,耗时耗力,为了解决这一问题,后端管理系统通过富文本 (模板)转成固定的h5链接,以供app端使用。不需要发版。

1 调研结果

android webview 不能直接加载pdf文件

  • 不建议pdf格式:


  • 建议采取以下方式:


类目

系统权限

新增接口

前端优化h5格式

是否常见

pdf

需要

不常见

h5

需要

常见

富文本

需要

需要

协议样式

显示效果

是否需要适配

有表格

见 8.1 效果1

需要

没表格

见 8.2 效果2

不需要

2 APP隐私协议入口

  • 1 app首次启动,弹窗点击相关隐私协议内容
  • 2 我的-设置-隐私-相关隐私协议

3 android 不能正常显示表格解决方案

//显示链接的样式
<a style="word-break:break-all"></a>
//正确的(自适应宽度)代码如下:
<table  style="table-layout: fixed; width="100%""></table>
//body 加style样式,前提:表格中 不能有 width
<body style="word-break:break-all;table-layout: fixed; width="100%"></body>

android 上线隐私政策怎么写 android隐私协议_加载


android 上线隐私政策怎么写 android隐私协议_富文本_02

4 加载PDF

  • 需要申请手机的存储权限
  • 原理是pdf转图片,再展示到界面,内存占用大

4.1直接使用第三方软件打开(包括浏览器打开和第三方软件打开)

跳转到浏览器,浏览器下载pdf,然后通过浏览器或第三方软件打开

4.2 用第三方库加载

Github上有一个Java开源项目 https://github.com/barteksc/AndroidPdfViewer ,
这个库的大致原理,是内置了一个PDF解析器,以流的方式将网络PDF从网上Down下来,然后再以流的方式将其还原成PDF展示出来(具体细节没关注)。亲测中,这个库每次进入webview页面都会解析加载一遍PDF,如果PDF过大,费时无缓存不说,最致命的问题乃是,
APK包体积会瞬间增大15M左右,

具体原因不明,估计应该是内置PDF解析器的问题

4.3 使用安卓自带的PdfRenderer类加载

如果要求支持的功能不是很多,用安卓提供的PdfRender就可以满足需求了。PdfRender加载多页的话可以配合ViewPager或者RecyclerView使用.需要注意的是使用PdfRender需要先将PDF文件下载到本地,是线程不安全的,并且API>=21才能使用。因为这种方式是将PDF下载到本地,于是就产生了新问题:占内存。如果是静态的PDF文件不大还好,但是如果是频繁加载网络PDF的需求,那就头疼了,这种方式需要做好定时清理删除PDF的工作,否则,GG。

5 加载word文档直接转换成的 html

第三方SDK

第三方名称

使用目的

收集个人信息

官方链接

第三方隐私政策

微信支付

深圳市腾讯计算机系统有限公司

帮助用户使用微信支付服务

设备标识信息、写入外部存

https://open.weixin.qq.com/

https://weixin.qq.com/cgi–bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacybin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy

支付宝

支付宝(中国)网络技术有限公司

帮助用户在应用内使用支付宝

设备标识信息、写入外部存储、、IMEI、IMSI、Android id、MAC、硬件序列号、ICCID、SSID、BSSID、传感器信息、网络类型、WIFI状态/参数/列表(安卓)、运营商信息(安卓)、操作系统、IP地址设备型号、系统属性(安卓)、系统设置(安卓)

https://opendocs.alipay.com/open/54/104509/

https://opendocs.alipay.com/open/54/01g6qm

android 上线隐私政策怎么写 android隐私协议_h5_03

6 加载word文档直接转换成的 html,加自动换行样式

第三⽅SDK列表

微信支付 SDK

第三方名称:深圳市腾讯计算机系统有限公司

使用目的:帮助用户使用微信支付服务

收集个人信息:设备标识信息、写入外部存

官网链接:https://open.weixin.qq.com/

隐私政策:https://weixin.qq.com/cgi–bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacybin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy

android 上线隐私政策怎么写 android隐私协议_加载_04

7 加载富文本

android 上线隐私政策怎么写 android隐私协议_h5_05

8 最终效果

8.1 效果1

android 上线隐私政策怎么写 android隐私协议_加载_04

8.2 效果2

android 上线隐私政策怎么写 android隐私协议_加载

9 流水线命令发版

'versionCode'          : project.hasProperty('VERSION_CODE') ? Integer.parseInt(VERSION_CODE) : 7020280,
'versionName'          : project.hasProperty('VERSION_NAME') ? String.valueOf(VERSION_NAME)   : '7.2.28',