游戏迷提供最新游戏下载和手游攻略!

Android 13 走在前列,帮帮我吧!我还可以学习

发布时间:2024-09-23浏览:49

1. 权限变更

1.1.通知权限

通知栏消息一直是应用与用户沟通的有效渠道。 Android 13之前,App只需要使用NotificationManager向最终用户推送通知栏消息。 Android13引入了新的运行时通知权限:POST_NOTIFICATIONS。应用程序开发人员需要密切关注这一点。

该权限经过测试总结如下:

1.首先看TargetSdk33的情况。

如下图,当App使用通知栏功能时,系统会自动弹出授权弹窗:

用户点击“允许”,App可以正常向用户推送消息:

2、我们看一下TargetSdk==33的情况。

?xml 版本='1.0' 编码='utf-8'?requestPermissions(new String[]{"android.permission.POST_NOTIFICATIONS"})

以上是用户点击“允许”App推送时的情况。当然,用户也可以点击“不允许”。值得注意的是,一旦授权被用户拒绝,系统下次将不会再出现申请权限的弹窗。

如果应用还想向用户推送重要消息(例如大版本更新),则需要引导用户到设置界面开启通知权限。代码如下:

私有无效jumpNotificationSetting(){最终ApplicationInfo applicationInfo=getApplicationInfo();尝试{ 意图意图=new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent.setAction('android.settings.APP_NOTIFICATION_SETTINGS'); Intent.putExtra('app_package', applicationInfo.packageName); Intent.putExtra('android.provider.extra.APP_PACKAGE', applicationInfo.packageName); Intent.putExtra('app_uid', applicationInfo.uid);启动活动(意图); } catch (Throwable t) { t.printStackTrace();意图intent=new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent.setAction('android.settings.APPLICATION_DETAILS_SETTINGS'); Intent.setData(Uri.fromParts('package' , applicationInfo.packageName, null));启动活动(意图); }}

温馨提示:

如果App想要确认用户是否开启了通知,可以调用NotificationManager.areNotificationsEnabled()来确定。

另外,除了“允许”和“不允许”两个选项外,用户还可以滑离权限申请对话框(User swipes fromdialog),即用户不选择授权(或不选择不授权)。那么下次App推送通知栏消息时,系统会再次弹出用户授权弹窗。

Android 13中的通知权限变化将极大改善最终用户体验。用户可以选择是否接受App推送的通知栏消息,减少无效消息的频繁打扰。

我们一直倡导绿色推送,强调在正确的时间、正确的地点、正确的场景将正确的内容推送给正确的人,给最终用户更好的体验。

1.2.更改WiFi 权限

Android 13对WiFi权限的改变也是一大焦点。在当前万物互联的时代,不同的智能家居/智能穿戴设备大多通过WiFi互联,因此这类App开发者必须更加关注这部分内容。

在以前版本的Android系统下,如果App想要使用WiFi相关功能,需要申请ACCESS_FINE_LOCATION,也就是位置权限,如下图:

为了避免过度索取App权限,更好地保护最终用户隐私,Android 13将WiFi权限与位置权限分离,并引入了新的运行时权限:NEARBY_WIFI_DEVICES。

如果App只需要使用WiFi相关的API,不需要使用getScanResults()、startScan()等位置相关的API,建议App开发者切换到新的NEARBY_WIFI_DEVICES权限。

全新WiFi权限操作机制:

权限使用及适配:

另外,如果应用在Android13上只使用WiFi API,不使用位置信息,开发者可以在AndroidManifest.xml中添加NEARBY_WIFI_DEVICES权限,将usesPermissionFlags属性设置为neverForLocation,并在ACCESS_FINE_LOCATION添加maxSdkVersion='32'限制允许。代码如下:

1.3.媒体权利更细分

除了通知权限和WiFi权限的更新之外,Android 13还进一步细化了本地数据访问权限。

Android13将READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限细分为:READ_MEDIA_IMAGES、READ_MEDIA_VIDEO和READ_MEDIA_AUDIO,如下图:

使用android.permission.READ.MEDIA_IMAGES 测试了新权限:

我们发现,单独请求READ_MEDIA_IMAGES、单独请求READ_MEDIA_VIDEO、或者同时请求READ_MEDIA_IMAGES READ_MEDIA_VIDEO时,系统只会显示一个授权弹窗。

1.4.精准闹钟权限

为了节省系统资源,Android12引入了SCHEDULE_EXACT_ALARM权限,用于“闹钟提醒”功能的授权管理。 Android13引入了新的闹钟权限USE_EXACT_ALARM。

与Android 12中的SCHEDULE_EXACT_ALARM权限不同,如果App申请了新的USE_EXACT_ALARM权限,用户无法在设置页面关闭授权。

对于日程管理、时间管理等类型的应用来说,Android 13中引入的USE_EXACT_ALARM权限可以带来一定的便利。与Android 12的SCHEDULE_EXACT_ALARM权限相比,使用新权限的应用程序将不再需要频繁打扰用户授权,可以更高效地为用户提供闹钟、日程提醒等服务。

不过,为了防止新权限被滥用,Google Play对上架设置了严格的审核机制。开发者需要注意的是,一旦使用了USE_EXACT_ALARM权限,App上架Google Play时将会受到平台的严格审核。除非该App是闹钟、定时器、日历等或者已被列入应用市场白名单,否则Google Play不会允许使用该权限的应用上架。

随着我国不断加大对App用户个人权益的保护力度,相信国内手机厂商和应用市场也会跟进,建立相应的审核机制,加强对用户权益的保护。建议App开发者持续关注相关动态,及时做好适配工作。

1.5.后台传感器权限

如今,生物信息安全也成为公众关注的焦点。为了更好地保护最终用户的个人生物识别信息,Android 13添加了新的后台传感器权限。

综上,我们可以看到Android 13对于个人隐私保护的高度重视和加强。除了权限变更之外,Android 13还进行了系统优化和组件更新,进一步提高系统的安全性和友好性。

2、系统优化

2.1.更安全的系统组件

2.1.1.意图过滤器

在以前版本的Android系统中,开发者只需将android:exported设置为true即可跨应用程序显式启动Activity和Service。即使意图过滤器中的操作或类型不匹配,仍然可以启动。

为了避免上述漏洞,Android 13增强了intent-filter的匹配过滤逻辑。在接收方的targetSdk==33的情况下,如果intent-filter匹配命中,则无论发送方的targetSdk版本如何,intent都会生效。

温馨提示:

以下情况不需要遵循intent-filter的匹配过滤逻辑:

同一应用程序中的意图

系统或Root进程发出的Intent

2.1.2、广播接收器

过去,在Android系统下,应用程序动态注册的BroadcastReceiver广播接收器会接收任何应用程序发送的广播(除非该接收器受到应用程序签名权限的保护),这会给动态注册的广播接收器带来安全风险。

Android13要求应用程序动态注册的广播接收器必须以显着的方式表明是否允许其他应用程序访问,即其他应用程序是否可以向其发送广播。否则,系统在动态注册时会抛出SecurityException。

目前,此增强功能默认不生效。开发者需要启用DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED兼容性框架,并在动态注册广播时指定是否接受其他应用程序的广播:

context.registerReceiver(接收器,intentFilter,RECEIVER_EXPORTED)context.registerReceiver(接收器,intentFilter,RECEIVER_NOT_EXPORTED)

温馨提示:

系统广播不受RECEIVER_NOT_EXPORTED 影响。

2.2.前台服务(FGS) 任务管理器

Android13还新增了前台服务(FGS)任务管理器功能。

如下图,用户可以在下拉通知栏中直接关闭前台服务和应用程序:

另外,如果系统检测到应用程序长时间(24小时内至少20小时)运行前台服务,则会向用户发送提醒通知。通知内容如下:

APP长时间在后台运行。点击即可查看。

值得注意的是,如果满足以下任一条件,系统将不会显示此通知:

前台服务相关的通知已经发送完毕,也就是说用户还没有关闭之前的提醒通知。

前台服务的类型为FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK 或FOREGROUND_SERVICE_TYPE_LOCATION

温馨提示:

如果系统已经针对某个应用程序显示此通知,则系统将至少等待30 天,然后系统才会再次显示该通知。此外,运行的前台服务,例如系统级应用程序和安全应用程序(例如具有android.app.role.EMERGENCY 角色的应用程序)将不会显示在FGS 任务管理器中。

2.3.通知权限

Android 9引入了应用程序备用存储分区功能,该功能可以根据应用程序的使用时间和频率,动态地将应用程序分配到5个不同优先级的存储分区,然后对不同存储分区中的应用程序实施不同级别的应用程序资源限制。

如下所示,存储分区按照优先级从高到低排序。优先级越低,对该分区中的应用程序的限制越多:

活动:该应用程序当前正在使用,或最近已使用过。

工作集:应用程序定期使用它。

经常使用:该应用程序会经常使用,但不是每天都使用。

很少使用:该应用程序不经常使用。

受限:应用程序消耗大量系统资源或表现出不良行为(Android 11 中引入)。

处于“限制”状态的申请将受到以下限制:

无法启动前台服务。

现有的前端服务将从前端中移除。

警报不会被触发。

作业将不会被执行。

Android 13在Android 9的应用程序待机存储分区功能的基础上,优化了电池资源策略,以延长设备的电池寿命,改善最终用户体验。

首先,Android 13添加了以下规则。满足相应规则的应用程序将进入“受限”存储分区(设备关闭的时间不计入交互限制):

用户已经8 天没有与该应用进行交互。

应用程序在一天内调用过多的广播或绑定服务。

应用程序在1 天内消耗大量电池电量,阈值取决于设备。

其次,Android 13还增加了对“受限”存储分区的应用限制:

应用程序不会收到BOOT_COMPLETED、LOCKED_BOOT_COMPLETED 广播

2.4.非SDK接口限制更新

Android 13 对一些非SDK 接口施加了限制(并提供了一些限制的替代方案)。开发者需要明确App在升级时是否使用了受限的非SDK接口。

Android13中受限非SDK接口参考:

Landroid/app/Activity;-setDisablePreviewScreenshots(Z)V # 使用setRecentsScreenshotEnabled() 代替。Landroid/os/PowerManager;-isLightDeviceIdleMode()Z # 使用isDeviceLightIdleMode() 代替。Landroid/os/Process;-setArgV0(Ljava/lang/String;)V # 一般情况下,不要尝试更改进程名称。如果必须更改进程名称(例如,为了调试),可以使用pthread_setname_np() 代替,但要注意这样做可能会使系统感到困惑.Landroid/view/accessibility/AccessibilityInteractionClient;-clearCache(I)V # Use改为android.accessibilityservice.AccessibilityService#clearCache() 。

3.功能更新

用户体验的提升一直是Android系统更新的重点。 Android13主要更新了剪贴板、大小屏适配、UI显示等功能。

3.1.剪贴板

如下图,Android13剪贴板功能的使用分为两步:

此外,Android 13还提供了脱敏功能,允许用户隐藏剪贴板中的敏感信息,实现便捷与安全的兼具。

3.2.更好地支持平板电脑和大屏幕

平板电脑、车载大屏、智能电视屏等的广泛应用,使得用户的终端场景越来越多样化。如何给不同终端的用户带来优美流畅的体验? Android13对此提供了更好的支持,更新了系统UI以及大屏分屏显示。

如下图所示,在大屏上,Android 13支持不同功能模块同屏显示,从而充分发挥大屏的优势。

Android 13系统下,用户可以将“快速设置”部分和“通知栏”部分放在同一个屏幕上。

3.3. Jetpack 窗口管理器

此外,Android 13还支持用户在大屏上同时显示多个Activity,以充分利用大屏的显示空间。

开发人员可以创建XML 配置文件或进行Jetpack WindowManager API 调用来确定应用程序如何在同一屏幕上实现多个Activity(例如并排或堆叠)。

例如,两个活动可以以分割任务窗口的形式显示在一个屏幕上。

3.4.更好的兼容性支持

对于尚未适配大屏的应用,Android 13还提供了更加友好稳定的兼容性支持,让这些应用在不影响最终用户体验的情况下,默认拥有舒适美观的UI显示,如下图:

总结

通过近两年的Android系统更新,我们可以看到谷歌不再对Android系统进行大刀阔斧的改动,而是在用户体验、隐私保护、系统安全、组件优化等方面做出了巨大的努力。

更多Android13更新亮点,开发者可以前往Android13官网了解更多:https://developer.android.google.cn/about/versions/13

Java部分,比如序列化、注解、泛型、反射、JVM、编译时、动态代理等等,都非常重要,尤其是当你往上走的时候,它就变得更加重要。这是在大厂家必问的问题,很多中小型工厂和学校招聘也会重点关注Java基础。

对于Kotlin部分,刚推出的时候,大家都不愿意学。现在,新的官方文档、示例代码、大公司面试、实际工作都转向了Kotlin。作为官方语言,国外基本上已经转用它了,但在国内,它的速度要慢一些。到目前为止,Kotlin 已经是一个明显的趋势。很多新技术需要和Kotlin结合使用。如果你不上船,那就太晚了。

Framework作为框架层,为我们提供了很多API,但是很多机制都是封装起来直接使用的。如果没有深入理解原理,很难在此基础上进行优化。学习框架不是一朝一夕的事,但是当你慢慢理解它时,你会发现日常工作中的很多问题都迎刃而解。还有,兄弟们,面试的时候一定要问问题啊!

还可以继续往下进行Framework开发、SDK开发,不过职位会比应用程序少一些,但是薪资和稳定性会更好。

性能优化是软件工程的深水领域,也是衡量一个开发技术水平的标准。因为想要了解性能优化,就必须对各种底层原理有深入的了解,并对各种案例有非常丰富的经验。 APP无论是从0到1,还是从1到N,都离不开性能优化。这也是面试中最容易测试一个人技术能力的部分。

很多大厂的性能优化专家真的可以成为高手……

开源框架+架构设计。除了能够使用各个开源框架之外,还必须主动学习其底层原理和设计思想。一方面是面试时经常被问到,另一方面是在大工厂里很容易遇到。您需要编写自己的框架的情况。相关原理以及对架构和设计模式的理解对于高级工程职位来说是必不可少的。

你可以辞去工程师的职务,也可以进入建筑领域,但作为一名建筑师,你对知识的广度有要求。

车载,最近热门的细分领域,也可以说是Android的又一个春天。底层要求会更高,涉及框架固件编程、系统UI、桌面程序、底层Window Display、底层协议USB通信、硬件等。以及串行通信和蓝牙通信

周围还有专车接送的人,工资也很好!

音视频,这个领域自疫情以来突然走到了风口浪尖。一方面是突发事件带来的焦点,另一方面5G的带宽带来了更好的体验。各家厂商纷纷进入该行业,但由于音视频这一领域自学难度大,很难招到合适的人选。自然,工资也水涨船高。

涉及C/C++、JNI、H.264、H.265、OpenSL、OpenGL、编解码器、网络协议、WebRTC、FFmpeg、IJKPlayer、librtmp等。

跨平台开发,跨平台框架主要解决UI和部分业务逻辑的跨平台问题。平台相关的东西比如蓝牙、平台交互、数据存储、打包构建等都离不开原生的支持。

所以跨平台和原生是一种共生关系。如果原生消失了,我们还会跨平台吗?不应该跨WinPhone吗?

跨平台是老生常谈的问题,主要是为了增加代码复用,减少我们对多平台差异化适配的工作量,降低开发成本(可能主要是为了企业降本增效~)

尤其是中小型工厂,在成本有限的情况下,可能更倾向于原生开发来掌握Flutter。

用户评论

青山暮雪

真香!Android 13确实进步挺大的,很多功能都变得更流畅了,对开发来说简直是福音!我还在摸索着各种新API,期待能制作出更多有趣的应用。不过话说回来,学习资料还真的不多啊,大佬们赶紧分享一下经验吧!

    有10位网友表示赞同!

迷路的男人

Android 13感觉更新不大呀,去年那个大修改我就没用上,今年的这个还没仔细体验过了...

    有5位网友表示赞同!

不浪漫罪名

我也是还在摸索呢,感觉新系统还是挺酷的,但一些操作的地方和旧版本有点不一样,需要慢慢适应。不过我倒是很喜欢这次对游戏性能的提升,玩游戏的流畅度比以前要好很多!

    有9位网友表示赞同!

花开丶若相惜

我也一直在学习Android 13,最近终于把官方文档啃完了,感觉难度还是挺高的。但是为了能够做出更优秀的应用,还是得咬牙坚持下来啊!希望可以像这篇文章里的作者一样,成为Android高手!

    有14位网友表示赞同!

人心叵测i

Android一直很好用呢,这个版本也还不错,但我觉得有些更新点对我来说不太实用,可能是我需求不同吧。不过总的来说还是值得期待,以后肯定会有更多好玩的应用出来了。

    有9位网友表示赞同!

心脏偷懒

学安卓确实不容易,我之前也才刚入门,很多概念都没弄明白,好在现在学习资源比以前多多了,各种视频教程和在线课程都可以免费学习。希望这篇文章能激勵我也努力學習!

    有10位网友表示赞同!

肆忌

Android 13太酷了!尤其是那个新的主题引擎,可以让我自己定制手机的外观,简直美滋滋!我现在每天都在尝试不同的搭配方式,哈哈!

    有8位网友表示赞同!

烟花巷陌

说实话,这个版本的更新对我没什么用,还是没找到它比之前版本更好的地方。不过,说不定以后会给我带来惊喜吧!

    有6位网友表示赞同!

初阳

我感觉Android 13最大的变化就是对开发者友好了一些。新的API和工具能让开发更省心、更高效。我相信未来会涌现出更多优秀的应用呢!

    有15位网友表示赞同!

万象皆为过客

这个标题起的真逗,扶我起来,我还是想看看你写的代码效果怎么样再决定帮你!不过,总的来说希望Android 13能够越来越好,让我们手机体验更好就是了!

    有8位网友表示赞同!

糖果控

Android一直都是我最喜欢的系统之一,这次更新希望能给我带来更多惊喜。我已经迫不及待想要尝试新的功能了!

    有8位网友表示赞同!

温柔腔

这个标题让我充满了期待,希望作者的分享能够带给我一些启发。我也想学习Android 13,做出更精彩的应用!

    有16位网友表示赞同!

尘埃落定

对于初学者来说,学习Android 13确实比较困难。我目前还在摸索阶段,很多地方不太懂。需要多找资料和大神学习,希望能早日突破瓶颈!

    有10位网友表示赞同!

太难

Android13的功能增强了很多,但学习成本也随之提高了。希望有更多教程和资源来帮助我们更好地了解这个新系统!

    有18位网友表示赞同!

■□丶一切都无所谓

我个人更喜欢简洁流畅的操作体验,感觉Android 13有些功能过于复杂或者冗余。不过,还是要期待它的发展,也许会给我带来意想不到的惊喜!

    有15位网友表示赞同!

_心抽搐到严重畸形っ°

学习Android 13确实不容易,但只要坚持学习,就会不断进步。就像这篇文章一样,分享自己的经验和故事,激励其他开发者努力奋斗。加油!

    有18位网友表示赞同!

残花为谁悲丶

Android 越来越棒了!希望未来能有更多更酷的功能,让我们使用体验更加愉快!

    有12位网友表示赞同!

浮光浅夏ζ

我一直在跟着官方文档学习 Android 13,感觉确实进步了不少。这篇文章写的也比较清晰易懂,感谢作者的分享!

    有5位网友表示赞同!

热点资讯