android 加载隐私协议策略

news2024/10/1 21:30:49

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

1 调研结果

android webview 不能直接加载pdf文件

  • 不建议pdf格式:
  • 如果显示pdf,条件是需要文件的存取权限,原理是:pfd下载转成图片
  • 原因是:首次启动app,会有隐私弹窗,如果进入隐私协议需要权限弹窗许可
  • 建议采取以下方式:
  • 加载h5,需要把显示内容转成h5,但是需要HTML元素中body元素 内容自动换行处理,排版中不用表格,见8.1效果
  • 加载富文本需要后台出接口,富文本转HTML也需前端处理
类目系统权限新增接口前端优化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>

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

7 加载富文本

在这里插入图片描述

8 最终效果

8.1 效果1

在这里插入图片描述

8.2 效果2

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——2.算法概述

这篇文章&#xff0c;我们来讲一下算法的概述&#xff0c;大致理解一下什么是算法。 目录 1.定义 2.生活实例 3.算法目标 4.实际案例 4.1案例一 4.2案例二 5.小结 1.定义 官方解释&#xff1a; 算法是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清…

前端面试题 —— 计算机网络(一)

目录 一、常见的HTTP请求头和响应头 二、HTTP状态码304是多好还是少好&#xff1f; 三、OPTIONS请求方法及使用场景 四、对keep-alive的理解 五、HTTP协议的优点和缺点 六、URL有哪些组成部分&#xff1f; 七、HTTPS通信&#xff08;握手&#xff09;过程 八、HTTPS的特…

浅析Windows Access Token以及利用方法

1 前置概念 关于Windows Access Token Windows Access Token(访问令牌)&#xff0c;它是一个描述进程或者线程安全上下文的一个对象。每个用户登录计算机都会产生一个AcessToken以用于创建进程和线程&#xff0c;用户注销以后会将主令牌切换成模拟令牌&#xff0c;也就是授权…

《网络安全入门到精通》 - 2.1 - Windows基础 - DOS命令Windows防火墙Windows共享文件

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「订阅专栏」&#xff1a;此文章已录入专栏《网络安全入门到精通》 Windows基础一、DOS命令1、目录文件操作dir 列出目录文件cd 切换目录md 创建目录rd 删除目录move 移动文件或目…

零入门kubernetes网络实战-18->命令行式操作tun设备介绍

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 1、如何操作tun设备呢&#xff1f; 主要提供两种形式&#xff1a; 命令行操作tun设备 openvpn(不介绍)tunctl(不介绍&#xff0c;不同系统间可能存在兼容…

第五章.最邻近规则分类(KNN)

第五章.最邻近规则分类&#xff08;KNN&#xff09; 5.1 最邻近规则分类&#xff08;KNN&#xff09; 1.KNN的计算方式 1).为了判断未知实例的类别&#xff0c;以所有已知类别的实例作为参照选择参数K。 2).计算未知实例与所有已知实例的距离 (利用欧氏距离公式) 其他距离衡量…

Nginx 原理

nginx是一个反向代理服务器&#xff0c;那么他是如何做到和服务器的连接呢&#xff0c;怎么进行负载均衡呢&#xff1f;如何支持高并发&#xff1f;&#xff1f;&#xff1f; Nginx的特点 &#xff08;1&#xff09;跨平台&#xff1a;Nginx 可以在大多数 Unix like OS编译运行…

mysql源码编译安装、mysql的主从复制、IOSQL线程优化

文章目录前言一、mysql源码编译安装二、主从复制1.主从复制的作用、原理2.实验过程三、gtid模式四、半同步模式&#xff1a;优化IO线程五、并行复制/多线程复制&#xff1a;优化SQL线程六、延迟复制前言 mysql是现在普遍使用的数据库&#xff0c;但是如果宕机了必然会造成数据…

用PS设置宽480像素*高640像素,分辨率300dpi,24位真彩色 大小限制20K到40K之间的照片

最近需要设置一组照片&#xff0c;是学生录取大学的电子照片&#xff0c;具体要求如下&#xff1a;宽480像素*高640像素&#xff0c;分辨率300dpi&#xff0c;24位真彩色 大小限制20K到40K之间&#xff1b;照片底色为白色或者蓝色&#xff0c;其他颜色均不符合条件。首先&#…

python+pytest接口自动化(3)-接口测试一般流程及方法

首先我们要明确&#xff0c;通常所接口测试其实就属于功能测试&#xff0c;主要校验接口是否实现预定的功能&#xff0c;虽然有些情况下可能还需要对接口进行性能测试、安全性测试。在学习接口自动化测试之前&#xff0c;我们先来了解手工接口测试怎样进行。URL组成为了更好的理…

数学建模介绍

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励…

【分布式系统】MinIO之Multi-Node Multi-Drive架构分析

文章目录架构分析节点资源硬盘资源服务安装安装步骤创建系统服务新建用户和用户组创建环境变量启动服务负载均衡代码集成注意最近打算使用MinIO替代原来使用的FastDFS&#xff0c;所以一直在学习MinIO的知识。这篇文章是基于MinIO多节点多驱动的部署进行研究。 架构分析 节点资…

迁移系统:换电脑或者硬盘转移磁盘文件的方法!

为什么要将操作系统迁移到新驱动&#xff1f; “将操作系统转移到新驱动您好&#xff0c;我刚刚为我的台式机订购了一个新的2TB希捷Barracuda硬盘&#xff0c;我想知道如何将我的Windows 10操作系统与我下载的其他一些软件一起转移过来。我使用新的/大的硬盘&#xff0c;然…

SpringBoot配置文件(properties yml)

查看官网更多系统配置项&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties 1.配置⽂件作⽤ 整个项⽬中所有重要的数据都是在配置⽂件中配置的&#xff0c;⽐如&#xff1a;数据库的连接信息&am…

【华为OD机试模拟题】用 C++ 实现 - 能力组队(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明能力组队题目输入输出示例一输入输出说明示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 O…

如何调教ChatGPT成为你的策略助手

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 去年12月的时候我们初次体验ChatGPT,《ChatGPT生成量化交易策略》. 当时还是很惊喜的&#xff0c;可以辅助写代码&#xff0c;写注释&#xff0c;给出一些示例。使用的时间长了发现写一…

java面试题-GC垃圾回收

1.如何判断一个对象是否可以回收&#xff1f;Java虚拟机使用可达性分析算法来判断对象是否可以被回收。可达性分析算法的基本思路是从一组称为“GC Roots”的根对象开始遍历所有对象&#xff0c;只有从GC Roots开始的对象可以被访问到&#xff0c;其他的对象都被判定为无用对象…

13 Sentinel介绍

什么是Sentinel 分布式系统的流量防卫兵&#xff1a;随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点&#xff0c;在流量控制、断路、负载保护等多个领域开展工作&#xff0c;保障服务可靠性。特点&#xff1a; 2. 丰富的应用场景&a…

Java 锁 高频 面试题回答

之前面了几个开发&#xff0c;问了关于锁的知识都是一问三不知 &#xff0c;也许是业务场景中出现的比较少&#xff0c;所以这些人只能回答出一些基础的线程方面的知识&#xff0c;之前也看了些书&#xff0c;做一些记录 &#xff0c;所以和大家分享一下 说一下乐观锁和悲观锁的…

Binder系统-C程序示例_框架分析

IPC&#xff1a;进程间的通信&#xff0c;远程调用&#xff0c;比如我们的A进程需要打开LED灯&#xff0c;调用led_open/led_ctl方法&#xff0c;但是他是没有权限去操作的&#xff0c;所以进程A通过&#xff1a;1.首先构造一些数据&#xff0c;2.通过IPC发送数据到进程B&#…