ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android 12 预览版带给我们的1234,android开发框架控件主题

2022-01-22 12:34:25  阅读:231  来源: 互联网

标签:1234 控件 12 应用程序 FLAG Activity Android PendingIntent


  • 安全

  • 新工具,新体验

对于用户来讲会有新体验,更隐私更安全,对于我们开发工作者来讲,有新工具。那么这些新的东西都具体体现在哪些方面呢?下面由我带着大家学习一番。

WebView 加入SameSite Cookie


Android的WebView组件基于Chromium,C
hromium是支持Google Chrome浏览器的开源项目。而在Chrome浏览器加入SameSite之后,现在又加入到了Android 12 的WebView中, SameSite Cookie可以提供更高的安全性和隐私性,并为用户提供更高的透明度和控制力,具体什么意思呢?请看大佬的文章,它解释的很清楚,Cookie 的 SameSite 属性

备份限制


为了保护个人应用程序的数据,Android 12更改了该adb backup命令的默认行为,于是我在Android 12上试了一下下,如图

第一步

获取已安装的应用程序列表

第二步

备份我的应用com.zzy.flutter_to_find_out

第三步

备份数据

请看细节

WARNING: adb backup is deprecated and may be removed in a future release

意思是该功能会被删除弃用,只是现在还没有。但官方描述又这么讲:如果您的测试或开发工作流程依赖于应用程序数据adb backup,您现在可以通过在应用程序的清单文件中将设置android:debuggable 为true,来选择导出应用程序的数据,且要注意上线后要改为false来保证应用数据的安全。

android:exported 必须显式声明


android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性,作用:是否支持其它应用调用当前组件,默认值:如果包含有intent-filter时为true; 没有intent-filter时为false,具体就不说明了,都是重复的知识。如果应用没有为android:exported需要的时间声明值,Logcat将提供以下错误消息:

Targeting S+ (version 10000 and above) requires that an explicit value for \

android:exported be defined when intent filters are present

更安全地处理Intent


为了更加安全地处理PendingIntent,Android 12要求应用为每个PendingIntent显式声明一个可变性标志,即FLAG_MUTABLE或FLAG_IMMUTABLE,解释下:

  • PendingIntent.FLAG_MUTABLE 可变、Android 12中新增的标志,作用是让Intent 在 send 的时候可更改

  • PendingIntent.FLAG_IMMUTABLE 不可变、Android 6.0 中添加的标志,作用是让Intent 在 send 的时候不可更改

如果应用创建一个PendingIntent对象时未设置任何可变性标志,则系统将抛出 IllegalArgumentException,并且Logcat中将显示以下消息:

PACKAGE_NAME: Targeting S+ (version 10000 and above) requires that one of \

FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if \

some functionality depends on the PendingIntent being mutable, e.g. if \

it needs to be used with inline replies or bubbles.

尽可能创建不可变PendingIntent

val pendingIntent = PendingIntent.getActivity(applicationContext,

REQUEST_CODE, intent,

/* flags */ PendingIntent.FLAG_IMMUTABLE)

那说明时候用可变呢?

如果应用创建了可变PendingIntent对象,则强烈建议使用明确的意图并填写 ComponentName。这样,每当另一个应用程序调用PendingIntent并将控制权传递回你的应用程序时,你的应用程序中的同一组件终将会启动。

前台服务启动限制


前台服务是应用程序管理某些用户任务的重要方式,但是如果过度使用,它们可能会影响性能甚至导致应用程序终止,除少数特殊情况外,Android 12的应用程序将无法在后台运行时启动前台服务。如果应用程序在后台运行时尝试启动前台服务,则会发生异常(少数特殊情况除外)。那么少数例外是什么呢?答: JobScheduler加入新的api,setExpedited(true)即可,但这并不是前台服务,而是可以在不考虑节电或节电等功耗限制的情况下立即运行。

无法从服务或广播接收者创建通知蹦床


当用户点击通知时,最终会启动与用户交互的应用组件(Activity、Service、Broadcast等)。这个应用程序组件被称为通知蹦床。但Android 12 以后将无法从服务或广播中启动Activity,看似是个坏消息,其实是为了提高用户体验,牺牲开发的行为。以后就只能直接绑定Activity,无法通过服务或广播启动,如果你想启动Activity,那就直接绑定Activity得了。

用于接收内容的统一API
Broadcast等)。这个应用程序组件被称为通知蹦床。但Android 12 以后将无法从服务或广播中启动Activity,看似是个坏消息,其实是为了提高用户体验,牺牲开发的行为。以后就只能直接绑定Activity,无法通过服务或广播启动,如果你想启动Activity,那就直接绑定Activity得了。

用于接收内容的统一API

标签:1234,控件,12,应用程序,FLAG,Activity,Android,PendingIntent
来源: https://blog.csdn.net/m0_66144992/article/details/122635624

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有