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

未来! Android 13适配指南

发布时间:2024-09-22浏览:64

各位老铁们,大家好,今天由我来为大家分享未来! Android 13适配指南,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

目前与Android 13的主要兼容性问题仍然在于隐私权限,因此本次适配指南的相关内容也重点关注这部分。 “这里涉及的比较广泛的应该是相册和通知权限。”

相册权限

你可能看过这个动画,“这是Android 13上提供的系统图片选择器,可以通过Intent(MediaStore.ACTION_PICK_IMAGES);打开。它支持视频、音频、图片分类,支持多选和单选”选择。”此外,官方还表示,该功能不仅会出现在Android 13 中,谷歌还将把它放置在Play 商店中,并推送到Android 11 和Android 12 设备上。

我们将TargetSDK设置调整为PreView,然后在Tiramisu模拟器上运行进行测试。我们主要测试了TargetSDK低于'Tiramisu'和等于'Tiramisu'时的不同情况。

如下图:

图1为“当TargetSDK低于13时,运行在Andorid 13模拟器上,此时可以正常访问本地图库相关信息”;

图2为通过官方提供的Intent(MediaStore.ACTION_PICK_IMAGES)打开的系统相册选择组件;在“提拉米苏”下。没有问题。

图3和图4显示了使用“Tiramisu”并运行之前的代码(不进行任何处理)后的相册读取情况。可以看到此时无法读取到相关信息;

图5是“通过申请新的android.permission.READ_MEDIA_IMAGES权限,可以继续使用之前的代码访问之前的专辑信息”,因为针对目标版本为Android 13的情况,现在对READ_EXTERNAL_STORAGE权限进行了细化,而开发者需要使用READ_MEDIA_IMAGE、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO来代替适配;

图6 申请权限后即可正常读取相册等信息;

总结:“所以如果TargetSDK是Android 13以下,则不需要处理。如果是Android 13及以上,则需要添加应用程序权限。”

通知

在Android R上,设置已经开始支持在设置中管理应用程序通知权限。但应用程序本身无法修改应用程序级别的通知权限,因此应用程序无法知道自己是否有发送通知的权限。

“因此Android 13 中添加了通知的运行时权限。”其中,Android 13(33)中的通知将根据运行应用程序的目标API级别进行不同的处理。 “但是,无论应用程序的目标API 级别如何,Android 13 都会提示用户授予应用程序发送通知的权限。”

“例如,下图中,targetSdk 30在Android 13模拟器上运行,仍然会出现弹出窗口询问用户是否允许推送。”

选择“允许”,应用程序可以通过任意渠道发送通知,发布与前台服务相关的通知;

选择“不允许”选项后,应用程序将无法发送通知,并且除少数特定规则外,所有通知渠道都将被阻止,类似于用户在系统设置中手动关闭应用程序的所有通知时发生的情况。

如果用户不选择,比如打开对话框,或者直接返回,应用程序只能发送经过系统临时授权的通知(应用程序必须已经有通知通道,并且用户不在配备有通知通道的设备上) 12L 或更低版本)显式停用应用程序的通知)

当然,通知访问:也是根据应用程序的目标API级别来处理的

对于新安装的应用程序,程序的目标API有所不同,如下:

如果应用程序的目标平台为12L(API 级别32)或更低;当应用程序创建第一个通知通道时,会出现权限对话框;

如果更新现有应用程序,则该程序的目标API 级别为:

针对Android 13(33),系统临时授予应用程序发送通知的权限,直到应用程序中的Activity第一次启动(即更新后第一次启动应用程序),这要求应用程序必须有现有的通知渠道。用户不得明确禁用其通知;

如果应用程序的目标平台为12L (32) 或更低,则系统会暂时授予应用程序发送通知的权限,直到用户在权限对话框中明确选择选项为止;

最后测试总结一下:

“如果TargetSDK低于Android 12L(32),只有在用户同意的情况下才能发送通知,通常是在应用程序启动时。例如,如果用户点击Disallow,则无法发送通知,并且不会发送通知再次发送,直到下次启动应用程序时询问,或前往“设置通知中心”将其打开”;

“如果TargetSDK是Android 13(33)及以上版本,必须手动添加android.permission.POST_NOTIFICATIONS和代码调用应用,否则设置中心可能无法打开;”

附近WIFI设备权限

在Android 13 中,Google 将Wi-Fi 扫描与位置相关内容分开。 Android 13 为管理设备与周围Wi-Fi 热点连接的应用程序添加了NEARBY_WIFI_DEVICES 运行时权限(属于NEARBY_DEVICES 权限组),从而不再需要ACCESS_FINE_LOCATION 权限。在这种情况下,您还可以让应用程序访问附近的Wi-Fi 设备。

此前,对于只需要连接Wi-Fi 设备但实际上不需要知道设备位置的应用,面向Android 13 (33) 的应用现在可以通过“neverForLocation”属性申请NEARBY_WIFI_DEVICES 权限。

只要您的应用不通过Wi-Fi API 推断出物理位置,当您定位Android 13 或更高版本并使用Wi-Fi API 时,您就可以请求NEARBY_WIFI_DEVICES 而不是ACCESS_FINE_LOCATION。

此新权限会影响多种不同的Wi-Fi 使用案例,包括以下内容:

查找或连接附近的设备,例如打印机或媒体播放设备,类似场景可以使用以下方法:

带外接收AP 信息(例如通过BLE);

使用仅限本地的热点发现并连接到具有Wi-Fi 感知和连接能力的设备;

通过Wi-Fi Direct 发现并连接到设备;

启动与已知SSID(例如汽车或智能家居设备)的连接。

打开热点仅供本地使用。

连接到附近的Wi-Fi 感知设备。

因此,开发需要区分不同API对应的权限;

需要新权限的API (NEARBY_WIFI_DEVICES):

WifiManager:startLocalOnlyHotspot()

WifiAwareManager:attach()

WifiAwareSession:发布(),订阅()

WifiP2pManager:addLocalService()、connect()、createGroup()、discoverPeers()、discoverServices()、requestDeviceInfo()、requestGroupInfo()、requestPeers()

WifiRttManager:startRanging()

仍需要位置信息权限(ACCESS_FINE_LOCATION)的API:

WifiManager:getScanResults()、startScan()

.

当面向Android 13(33) 时,如果您的应用不通过Wi-Fi API 推断物理位置,请在清单文件中将usePermissionFlags 属性设置为neverForLocation。

.

总结一下:“针对Android 13(33)的应用程序可以访问附近的WI-FI设备。除特殊API需要申请ACCESS_FINE_LOCATION外,其他需要申请android.permission.NEARBY_WIFI_DEVICES运行时权限”;

在后台使用身体传感器需要新的权限

Android 13引入了“使用时”访问身体传感器(例如心率、体温和血氧饱和度)的概念,这与Android 10(API级别29)系统引入的用于定位的模式非常相似信息。

【注意】:这是一个受到“硬限制”的权限。除非设备的安装程序已将此权限包含在您的应用程序的权限列表中,否则您的应用程序将无法获得此权限。详情请参阅限制权限指南。

意图过滤器阻止不匹配的意图

当应用程序向另一个以Android 13(33) 或更高版本作为目标的应用程序的导出组件发送Intent 时,仅当该Intent 与接收应用程序中的元素匹配时,系统才会传递该Intent。换句话说,系统将屏蔽所有不当内容。匹配意图,但以下情况除外:

发送到应用程序中其他组件的意图;

系统发送的意图;

具有root级别权限的用户发送的意图;

更安全地导出上下文注册的接收器

为了帮助提高运行时接收器的安全性,Android 13 允许您指定应用中的特定广播接收器是否应导出并对设备上的其他应用可见。这一变化是Android 12 更安全组件的延续;

针对Android 13(33) 或更高版本的应用必须为每个广播接收器指定RECEIVER_EXPORTED 或RECEIVER_NOT_EXPORTED,否则当应用尝试注册广播接收器时,系统将引发SecurityException。

//此广播接收器应该能够接收来自其他应用程序的广播。//此选项会导致与在应用程序的清单中将广播接收器的//'exported' 属性设置为true 相同的行为。 );//出于应用程序安全原因,此私有广播接收器不应该**//能够接收来自其他应用程序的广播。context.registerReceiver(privateBroadcastReceiver, intentFilter, RECEIVER_NOT_EXPORTED);

应用自行撤销权限

在Android 13中,谷歌添加了一个新的API,允许开发者降级权限。

应用程序可以触发撤销授予调用API 的包的一项或多项运行时权限。不需要访问特定运行时权限控制API的应用程序可以自行撤销这些权限,因此用户可以确保这些应用程序不会在不知情的情况下使用这些API。

要撤销特定的运行时权限,请将权限的名称传递到revokeOwnPermissionOnKill() 方法中。要立即撤销一组运行时权限,请将权限组的名称传递给revokeOwnPermissionsOnKill()。

撤消异步发生并终止与应用程序UID 关联的所有进程。

系统仅在安全时才会触发撤消,即当应用程序组件仍在前台运行或另一个应用程序正在访问您的应用程序的组件(例如内容提供程序)时。

如果想立即撤销权限,可以调用exit()。但是调用exit() 可能会导致当前访问该应用程序的其他应用程序崩溃。

剪贴板擦除

Android 之前提供了剪贴板服务,所有应用程序都可以使用它来放置和检索文本。

虽然从技术上讲任何应用程序都可以清除全局剪贴板的主要内容(只要它们是Android 10+上的前台应用程序或默认输入法),但Android本身不会自动清除剪贴板。

这意味着保留在全局剪贴板中的任何剪贴板内容都可以稍后由应用程序读取,尽管Android 的剪贴板访问toast 消息可能会提醒用户。

Android 13增加了自动剪贴板清除功能。该功能默认关闭。在设定的时间后,主剪辑将自动从全局剪贴板中清除。默认情况下,3600000 毫秒(60 分钟)后,剪贴板将被清除。

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

Android 13 的新前台服务(FGS) 任务管理器显示当前运行前台服务的应用程序列表。该列表称为“活动应用程序”,可以通过拉下通知抽屉并单击每个应用程序的显示来访问。旁边会有一个“停止”按钮。

注意:当用户单击应用程序旁边的“停止”按钮时,系统会停止整个应用程序,而不仅仅是正在运行的前台服务。

注意:如果系统检测到您的应用长时间运行前台服务(24小时内至少运行20小时),则会发送通知邀请用户与FGS任务管理器交互。详情参见:https://developer.android.google.cn/about/versions/13/changes/fgs-manager#system-prompt-long-running-fgs

使用JobScheduler 改进预取处理

借助JobScheduler,应用程序可以使用JobInfo.Builder.setPrefetch() 将特定作业标记为“预取”,这意味着理想情况下这些作业应该比应用程序下次启动时运行得早一些,以改善用户体验。

过去,JobScheduler 仅使用此信号为预取作业提供使用空闲或冗余数据的机会。在Android 13 中,系统现在将尝试确定应用程序下次启动的时间,并根据该估计运行预取作业。应用程序应尝试使用“预取”在下一次应用程序启动之前完成它们想要完成的任何工作。

电池资源利用率

Android 13 中引入了电池资源利用率功能,为系统提供多种方式来更好地管理设备电池寿命:

更新了系统何时将您的应用程序放入受限应用程序备用存储桶中的规则。

如果用户由于后台电池使用率较高而将您的应用程序置于“受限”状态,则应用程序可以执行的操作将受到新的限制。

添加了新的系统通知,以警告用户电池使用率过高和前台服务长时间运行的情况。

总结

只需要在TargetSDK 33 中解决的更改:

相册权限

附近WIFI设备权限

在后台使用身体传感器需要新的权限

意图过滤器阻止不匹配的意图

更安全地导出上下文注册的接收器

应用自行撤销权限

剪贴板擦除

影响所有应用程序的更改:

通知权限

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

用户评论

花菲

终于更新啦!一直在等这个版本来体验新功能,不过我的手机型号会不会支持呢?

    有17位网友表示赞同!

莫阑珊

手机换了很久还没升级过系统更新,感觉现在安卓系统已经很流畅了,不知道 Android 13 的体验会是怎样的。

    有8位网友表示赞同!

太易動情也是罪名

对新功能还是挺期待的,看了一下适配指南,我的手机型号也在列表里,可以放心升级了!

    有13位网友表示赞同!

oО清风挽发oО

这篇Android 13 的适配指南写得清清楚楚,很容易理解各个步骤,感谢分享这个实用信息!

    有7位网友表示赞同!

青瓷清茶倾城歌

适配指南太关键了,升级系统之前必须先确认一下看我家手机型号是否支持,不然升级后各种bug真是折磨人的。

    有19位网友表示赞同!

金橙橙。-

Android 13 的部分新功能看起来挺有意思的,希望能提升用户体验,不过担心更新后可能会导致我的手机运行更慢一点,希望没有这种问题发生!

    有6位网友表示赞同!

青衫负雪

升级系统之前一定要仔细阅读指南,避免出现升级失败或者其他问题的麻烦,毕竟手机是现在人离不开的常用工具。

    有6位网友表示赞同!

浮殇年华

这篇文章真是太及时了,我正好想了解一下 Android 13 的新功能和适配情况! 真期待手机能尽快升级到最新的版本呢。

    有7位网友表示赞同!

疯人疯语疯人愿

Android 系统更新的速度越来越快了?感觉上次才刚更新上 Android 12 ,就又来了 Android 13。我的手机型号是不是不支持啊?

    有9位网友表示赞同!

丢了爱情i

希望 Android 13 能对用户隐私保护做得更好,减少一些信息泄露的风险!

    有10位网友表示赞同!

_心抽搐到严重畸形っ°

适配指南看起来很完善,每个步骤都说得详细,让人很容易理解和操作。如果能附上视频教程就更好了,更加直观易懂。

    有8位网友表示赞同!

雨后彩虹

我的手机型号支持 Android 13 ?我已经很久没更新系统了,不知道这次升级后会有什么变化?

    有8位网友表示赞同!

我绝版了i

Android 系统的每一次更新都带给用户一些惊喜吧!期待体验 Android 13 的新功能和改进之处,希望能带来更加流畅、高效的使用体验!

    有13位网友表示赞同!

发呆

对新操作系统一直比较好奇,希望 Android 13 能优化一些细节方面的问题,让手机使用起来更顺滑!

    有14位网友表示赞同!

爱你的小笨蛋

感觉最近安卓系统更新的速度越来越快了。每次更新带来的功能改变还是挺大的,需要我认真学习一下才能适应。

    有20位网友表示赞同!

醉枫染墨

适配指南写的太详细了,每个步骤都清晰易懂,非常实用,即使是对安卓系统不太了解的人也能轻松完成升级操作!

    有11位网友表示赞同!

你tm的滚

我一直觉得安卓系统的安全性有待加强,希望 Android 13 能进一步提高系统安全性和隐私保护功能!

    有9位网友表示赞同!

热点资讯