前言
2024-01-06 02:34:15
Android 13 适配指南:为所有应用和 TargetSdkVersion = 33 做好准备
Android 13(代号“T”)横空出世,为 Android 生态系统带来了令人兴奋的更新和变更。开发者了解这些变更至关重要,以确保应用在新平台上顺畅运行。本文将深入探讨 Android 13 对所有应用和特定 TargetSdkVersion = 33 应用的影响,提供全面的适配指南,帮助开发者无缝过渡到 Android 13。
Android 13 对所有应用的影响
蓝牙 LE 广告权限
Android 13 引入了 BLUETOOTH_ADVERTISE 特权,应用需要声明该特权才能使用蓝牙低功耗(LE)广告功能。如果没有声明,应用将无法广播其自身的存在或扫描附近的设备。
<manifest>
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
</manifest>
后台待机优化
Android 13 采用了更严格的待机优化机制,可能会影响应用的后台活动。应用需要仔细考虑其后台行为,并仅在绝对必要时执行任务。
系统主题适应性
Android 13 要求应用提供可选的深色和浅色模式,以遵循用户的系统主题偏好。应用需要在清单文件中声明其主题,并提供两种变体。
<manifest>
<application android:theme="@style/Theme.MyApplication.Dark" />
</manifest>
剪贴板历史记录权限
Android 13 引入了 READ_CLIPBOARD_HISTORY 特权,应用需要声明该特权才能访问剪贴板历史记录。未经授权,应用将无法访问过去复制的内容。
<manifest>
<uses-permission android:name="android.permission.READ_CLIPBOARD_HISTORY" />
</manifest>
Nearby 设备许可
Android 13 引入了 BLUETOOTH_CONNECT 特权,应用需要声明该特权才能与附近的设备进行通信。应用需要谨慎使用该特权,并仅在需要时请求访问权限。
<manifest>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
</manifest>
Android 13 TargetSdkVersion = 33 的变动
后台启动限制
TargetSdkVersion = 33 的应用将受到更严格的后台启动限制。应用需要在清单文件中显式声明启动类型,以便系统在应用需要运行时对其进行调度。
<manifest>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
</intent-filter>
</activity>
</manifest>
模糊位置权限
TargetSdkVersion = 33 的应用需要迁移到新的 ACCESS_FINE_LOCATION 特权,以访问模糊位置数据。应用需要在清单文件中声明该特权,并提供合理的访问位置权限的理由。
<manifest>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
设备连接权限组
Android 13 引入了设备连接权限组,其中包含 BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 特权。应用需要谨慎使用这些特权,并仅在需要时请求访问权限。
<manifest>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_CONNECT" />
</manifest>
系统主题定制
TargetSdkVersion = 33 的应用可以针对不同的显示配置(例如折叠屏设备)定制其主题。应用需要在清单文件中声明其主题并提供不同的变体。
<manifest>
<application android:theme="@style/Theme.MyApplication.Foldable" />
</manifest>
Haptic 震动体验改进
Android 13 提供了新的 haptic 振动 API,允许应用创建更细腻和可定制的触觉反馈。应用需要在清单文件中声明 VIBRATE 特权,并使用新 API 创建触觉体验。
<manifest>
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
```java
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(VibrationEffect.createOneShot(500, 10));
适配 Android 13 的建议操作
所有应用:
- 更新清单文件,声明必要的权限。
- 测试应用在后台待机模式下的行为,并根据需要进行调整。
- 确保应用支持系统主题适应性。
- 谨慎访问剪贴板历史记录,并获得用户的明确同意。
- 集成 Nearby 设备 API,但仅在需要时请求 BLUETOOTH_CONNECT 特权。
TargetSdkVersion = 33 应用:
- 更新清单文件,指定适当的启动类型。
- 迁移到新的 ACCESS_FINE_LOCATION 特权,以访问模糊位置数据。
- 采用设备连接权限组,以控制对蓝牙功能的访问。
- 利用系统主题定制功能,以优化不同显示配置的应用体验。
- 探索新的 haptic 振动 API,以增强应用的触觉反馈。
常见问题解答
问:我需要更新所有应用以支持 Android 13 吗?
答:是,所有应用都需要更新其清单文件以声明必要的权限和启动类型。
问:如果我的应用没有使用蓝牙 LE 广告,我需要声明 BLUETOOTH_ADVERTISE 特权吗?
答:否,如果您不使用蓝牙 LE 广告,则不需要声明 BLUETOOTH_ADVERTISE 特权。
问:如果我的应用不需要模糊位置数据,我需要迁移到 ACCESS_FINE_LOCATION 特权吗?
答:否,如果您不需要模糊位置数据,则不需要迁移到 ACCESS_FINE_LOCATION 特权。
问:我如何针对不同的显示配置定制我的主题?
答:在清单文件中声明您的主题,并为不同的显示配置提供不同的变体。
问:我如何利用新的 haptic 振动 API?
答:声明 VIBRATE 特权,并使用新的 VibrationEffect 类创建触觉体验。
结论
Android 13 带来了重大变更,影响着所有应用和 TargetSdkVersion = 33 的应用。通过遵循本文中的适配指南,开发者可以确保其应用在新平台上无缝运行并提供最佳用户体验。随着 Android 13 的广泛采用,应用的适配对于确保 Android 生态系统的平稳过渡至关重要。