Android13的适配内容
Android的13需要适配的内容
Android 13即将发布,细化的媒体权限、内置图片选择器、隐藏剪贴板中的敏感内容、屏蔽不匹配的 Intent、针对 Wifi 设备的新运行时权限、广告 ID 权限。对于这个版本的发版内容,记录一下Android开发者需要做的工作内容。
通知权限的适配#
上一次的通知大改动是Android 8.0,增夹的内容是App的Channel。即每个App需要申请自己的通知通道,防止通知混乱。到了2022年的时候,现在增加了一个大的版本内容修改,通知权限的申请。再Android的Manifest配置文件中,增加权限申请。
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
不同的是Android 13之前是系统提示授权弹窗,Android 13之后是需要申请运行时权限才行。如果用户未打开需要让用户去申请。
try {
Intent intent = 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);
startActivity(intent);
} catch (Throwable t) {
t.printStackTrace();
Intent 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));
startActivity(intent);
}
读取媒体文件适配#
读取READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
权限细分为: READ_MEDIA_IMAGES
、READ_MEDIA_VIDEO
和READ_MEDIA_AUDIO
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
再Android 13上申明同时有了写权限的话就不需要申请WRITE_EXTERNAL_STORAGE
,但是当前来说,还是要都写上权限内容,只有再具体使用的时候进行细分,比如读取照片或视频的时候在进行具体的权限适配。Android再13上也提供了照片选择器来给开发者使用。
对于检测类的WiFi相关的也需要进行适配#
Android 13中对于附件WiFi的权限新增了NEARBY_WIFI_DEVICES
,将WIFI权限从位置权限剥离出来。如果在Android 13之前你想通过NEARBY_WIFI_DEVICES
来使用位置信息的话要注意啦,估计会报错的。实际操作过程是两个都要申请下来才行。
增加了后台传感器权限,对于需要心率、体温和血氧的数据应用,需要申请 BODY_SENSORS
和BODY_SENSORS_BACKGROUND
权限才行。
前台服务增和App扩展启动场景有了新变化#
App的intent-filter
增加了判断逻辑,在 Android 13之前,跨应用显式启动Activity和Service,只需要将android:exported 设为true就可以,即使intent-filter 中 action 或者 type不匹配的情况下,也可以正常启动。只要intent-filter匹配中了,不管发送方的targetSdk版本,intent都会的生效。
前台服务的增加了用户停止的允许的操作,即可以从下拉的通知栏中停止前台服务。长时间(在 24 小时的时间段内至少运行 20 小时)的运行前台服务会主动触发信息提示给用户。APP is running in the background for a long time. Tap to review.
这个提示的消除规则是:已经发送过前台服务相关的通知,即用户未关闭之前的提醒通知。;前台服务的类型为 FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK 或 FOREGROUND_SERVICE_TYPE_LOCATION。
存储分区增加受限#
该功能会根据应用的使用时间和频率,动态地将应用分配到五个不同优先级的存储分区,对这些存储分区的应用施加不同级别的应用资源限制;
- 活跃:应用目前正在使用中,或者最近刚刚使用过
- 工作集:应用会定期使用
- 常用:应用会经常使用,但不会每天使用
- 极少使用:应用不经常使用
- 受限:应用会消耗大量的系统资源,或表现出不良行为。(Android 11引入)受限的应用无法启动前台服务;不会触发闹钟;现有的前台服务背会移除;不会执行Jobs
对受限存储分区的应用追加了以下限制措施:应用将不收受到BOOT_COMPLETED、LOCKED_BOOT_COMPLETED广播
新增功能#
剪切板管理和照片选择器
作者:kevin2022
出处:https://www.cnblogs.com/kevin2022/p/16707254.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
你可以在这里自定义其他内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库