当前位置:首页 » 安卓系统 » 安卓暴露设置有什么用

安卓暴露设置有什么用

发布时间: 2022-12-07 01:20:41

1. Android Gson 使用详解

Json 是一种文本形式的数据交换格式,比 xml 更为轻量。Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 FastJson 两种,这里要介绍的是 Gson

Gson 的 GitHub 主页点击这里: Gson

在进行序列化与反序列操作前,需要先实例化一个 com .google.gson.Gson 对象,获取 Gson 对象的方法有两种

利用 Gson 可以很方便地生成 Json 字符串,通过使用 addProperty 的四个重载方法

addProperty 方法底层调用的是 add(String property, JsonElement value) 方法,即将基本数据类型转化为了 JsonElement 对象,JsonElement 是一个抽象类,而 JsonObject 继承了 JsonElement ,因此我们可以通过 JsonObject 自己来构建一个 JsonElement

Json数组 与 字符串数组

Json数组 与 List

Gson 也提供了 toJson() 和 fromJson() 两个方法用于转化 Model 与 Json,前者实现了序列化,后者实现了反序列化
首先,声明一个 User 类

序列化的方法很简单,调用 gson 对象的 toJson 方法,传入要序列化的对象

反序化的方式也类似

继续使用上一节声明的 User 类,根据 User 类声明的各个属性名,移动端的开发者希望接口返回的数据格式即是如下这样的

如果没有和服务器端沟通好或者是 API 改版了,接口返回的数据格式可能是这样的

如果继续使用上一节介绍的方法,那无疑会解析出错
例如

name 属性值解析不到,所以为 null

此时为了兼顾多种格式的数据,就需要使用 SerializedName 注解
根据 SerializedName 的声明来看,SerializedName 包含两个属性值,一个是字符串,一个是字符串数组,而字符串数组含有默认值

SerializedName 的作用是为了在序列化或反序列化时,指导 Gson 如果将原有的属性名和其它特殊情况下的属性名联系起来

例如,修改 User 类,为 name 声明 SerializedName 注解,注解值为 userName

在序列时,Json 格式就会相应改变

在反序列化时也一样,能够解析到正确的属性值

还有个问题没解决,为了应对多种属性名不一致的情况,难道我们要声明多个 User 类吗?这显然是不现实的,所以还需要为 User 类设置多个备选属性名,这就需要用到 SerializedName 注解的另一个属性值 alternate 了。

以下几种情况都能够被正确的反序列化

有时候并不是所有的字段都需要进行系列化和反序列化,因此需要对某些字段进行排除,有四种方法可以来实现这种需求。

Expose 注解包含两个属性值,且均声明了默认值。Expose 的含义即为“暴露”,即用于对外暴露字段,serialize 用于指定是否进行序列化,deserialize 用于指定是否进行反序列化。如果字段不声明 Expose 注解,则意味着不进行序列化和反序列化操作,相当于两个属性值均为 false 。此外,Expose 注解需要和 GsonBuilder 构建的 Gson 对象一起使用才能生效。

Expose 注解的注解值声明情况有四种

现在来看个例子,修改 User 类

按照如上的注解值,只有声明了 Expose 注解且 serialize 值为 true 的字段才能被序列化,只有声明了 Expose 注解且 deserialize 值为 true 的字段才能被反序列化

Gson 提供了 @Since 和 @Until 两个注解基于版本对字段进行过滤,@Since 和 @Until 都包含一个 Double 属性值,用于设置版本号。Since 的意思是“自……开始”,Until 的意思是“到……为止”,一样要和 GsonBuilder 配合使用。

当版本( GsonBuilder 设置的版本) 大于或等于 Since 属性值或小于 Until 属性值时字段会进行序列化和反序列化操作,而没有声明注解的字段都会加入序列化和反序列操作

现在来看个例子,修改 User 类

访问修饰符由 java.lang.reflect.Modifier 提供 int 类型的定义,而 GsonBuilder 对象的 excludeFieldsWithModifiers 方法接收一个 int 类型可变参数,指定不进行序列化和反序列化操作的访问修饰符字段
看个例子

GsonBuilder 类包含 setExclusionStrategies(ExclusionStrategy... strategies) 方法用于传入不定长参数的策略方法,用于直接排除指定字段名或者指定字段类型
看个例子

字段名为 "intField" 和字段类型为 double 的字段都会被排除掉

setExclusionStrategies 方法在序列化和反序列化时都会生效,如果只是想指定其中一种情况下的排除策略或分别指定排除策略,可以改为使用以下两个方法

对于 Gson 而言,在序列化时如果某个属性值为 null 的话,那么在序列化时该字段不会参与进来,如果想要显示输出该字段的话,可以通过 GsonBuilder 进行配置

默认的序列化后的 Josn 字符串并不太直观,可以选择格式化输出

Gson 也可以对时间值进行格式化

TypeAdapter 是一个泛型抽象类,用于接管某种类型的序列化和反序列化过程,包含两个抽象方法,分别用于自定义序列化和反序列化过程

下面看个简单的例子

定义 TypeAdapter 的子类 UserTypeAdapter 来接管 User 类的序列化和反序列化过程
这里设定当 User 类序列化时 Json 中的Key值都是大写字母开头,反序列化时支持“name”和“Name”两种不同的 Json 风格

可以看到 User 类按照预定义的策略来完成序列化和反序列化了

TypeAdapter 将序列化和反序列操作都接管了过来,其实 Gson 还提供了只接管序列化过程的接口,即 JsonSerializer
看个例子

相对应的,JsonDeserializer 接口提供了反序列化的接口

这里有个比较麻烦的地方,那就是在使用 TypeAdapter 、JsonSerializer JsonDeserializer 时,总需要调用 registerTypeAdapter 方法进行注册,那有没有更简单的注册方法呢?
有的,Gosn 还提供了另一个注解 @JsonAdapter 用于进行简单的声明

类似于这样,声明了 User 类的序列化或反序列化操作由 UserTypeAdapter 完成,注解的优先级高于 registerTypeAdapter 方法

TypeAdapterFactory 是用于创建 TypeAdapter 的工厂类,通过参数 TypeToken 来查找确定对应的 TypeAdapter,如果没有就返回 null 并由 Gson 默认的处理方法来进行序列化和反序列化操作,否则就由用户预定义的 TypeAdapter 来进行处理

这一篇文章好像写得太长了一点?Gson 的知识点介绍到这里也差不多了,以后如果还发现新内容的话我会继续补充,现在就先这样啦

2. 安卓12加入隐私功能,网友:魅族一年前不都有了吗

隐私安全是一个老生常谈的话题,尤其是在这个高度数据化的互联网时代,大部分信息我们都可以借助手机或者电脑之类的上网终端进行交换获取,在你获取信息的过程中你的一些个人隐私信息也可能被暴露出去。这些隐私可能是电话号码,身份信息乃至地理位置,个人的这些信息被泄露很有可能出现诸如诈骗,身份被冒用等等问题。很显然这类问题的出现对我们个人用户还是影响非常大的,隐私保护也应该得到更多的重视。

除了在日常生活中有可能无意间泄露隐私外,我们使用最频繁的上网工具手机也是隐私泄露一大重灾区,尤其是安卓系统手机上。好在今年2021 Google I/O大会上,谷歌提到了Android 12的更新适配,除了提升系统流畅还将推出大家期待已久的安全隐私功能,通过一系列的功能措施来提升安卓系统的隐私防护。这无疑是一个很不错的变化,但是目前大部分机型也只是对Android 12进行尝鲜更新,正式版全面上线估计还需要一些时间。

其实对于谷歌会在Android 12上加入隐私功能并不是太惊讶的事,因为市面上已经有只适配Android 11乃至更低系统版本的机型通过手机厂商定制UI也能实现这种隐私功能,魅族Flyme9就是其中的佼佼者!

全新的Flyme9系统更加重视用户个人隐私,着手推出4大安全隐私法宝,它们分别是:守护权杖、全视鹰眼、隐形妙靴以及私密斗篷。在应用权限管理,应用行为记录,以及地理位置获取等方面进行了详细功能设置,以保证用户对自己的隐私信息不再被动,同时更加合理的规范应用的权限获取。

此外,Flyme9默认开启“防止应用跟踪”功能。该功能可以有效地防止“跟踪式”的精准广告定位投送,解决被应用广告骚扰的烦恼。现在的魅族18系列机型正真做到拒绝偷拍,拒绝偷以及拒绝跟踪,成为不泄露隐私的安全手机,用户的个人隐私有了一个更强的保障!

可以这样说,Android 12现在才更新的隐私安全固件,魅族定制UI系统Flyme已经适配领先有一整年时间。目前魅族18系列,17系列的手机用户可以通过Flyme9系统更好的保护个人隐私,在接下Flyme9还将计划适配更多老旧魅族机型,更多手机用户能够享受到新系统带来的隐私安全保护!

3. 安卓手机中的私密模式有什么用处

是给自己的秘密更深层的保护,即使别人知道自己的解锁密码,也不会解开隐私模式的密码,因为这是单独,独立设置的一项保护,即便是丢了手机,别人捡到了,也不会轻易的查看你个人的隐私秘密。

4. 打开暴露通知会对手机怎么样有影响吗!

打开暴露通知会对手机没有影响。
暴露通知能够在不侵犯隐私的前提下,使用轮替的随机蓝牙标志符来确定用户是否可能曾暴露于声明已感染 COVID-19 的患者。
暴露通知状态就会显示为已启用,活跃地区为 CAICT,这样就表示用户可以正式使用该功能。如果通过系统直接设置无效,还可以通过通信行程卡 App 来设置实现。

热点内容
伏吟的算法 发布:2024-05-07 00:51:48 浏览:828
安卓手机上的照相键在哪里 发布:2024-05-07 00:51:45 浏览:605
ftp如何删除顽固文件 发布:2024-05-07 00:50:57 浏览:250
idea文件夹显示 发布:2024-05-07 00:30:04 浏览:249
怎么把ps存储为ai 发布:2024-05-07 00:30:03 浏览:272
参数内存缓存 发布:2024-05-07 00:28:54 浏览:746
android状态栏高度 发布:2024-05-07 00:24:42 浏览:241
数据库主文件 发布:2024-05-07 00:14:41 浏览:608
木头创意解压 发布:2024-05-07 00:11:55 浏览:215
密码都能设置什么 发布:2024-05-07 00:02:30 浏览:741