就是在 application 中声明一个 accessibilityCategory

一、Android 17 Beta2 无障碍策略的适配性分析

1. Android 17 Beta2 核心变更(无障碍相关)

Android 17 Beta2 对无障碍服务新增了强制声明规则:

  1. 所有使用无障碍服务的应用,必须在manifest中通过标签的android:accessibilityCategory属性声明自身的无障碍用途(分类);
  2. 未声明该属性的应用,无障碍服务将无法被系统启用,甚至可能被系统判定为违规。

二、适配 Android 17 Beta2 的完整修改方案

以下是修改后的manifest核心部分(仅展示关键变更,其余代码保留):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="14"
    android:versionName="1.4"
    android:compileSdkVersion="35"  <!-- 建议升级到对应Android 17的编译版本(35) -->
    android:compileSdkVersionCodename="14"  <!-- Android 17对应codename为14 -->
    package="com.aiappx.aikefu"
    platformBuildVersionCode="35"  <!-- 同步升级为35 -->
    platformBuildVersionName="14">  <!-- 同步升级为14 -->
    
    <!-- 原有uses-sdk、权限声明保留 -->
    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="35" />  <!-- 建议升级target到35以适配Android 17 -->

    <application
        android:theme="@style/ScriptTheme"
        android:label="智能客服"
        android:icon="@mipmap/ic_launcher"
        android:name="com.aiappx.aikefu.App"
        android:allowBackup="false"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:extractNativeLibs="true"
        android:usesCleartextTraffic="true"
        android:appComponentFactory="androidx.core.app.CoreComponentFactory"
        android:requestLegacyExternalStorage="true"
        <!-- **************** 核心新增:Android 17无障碍分类声明 **************** -->
        android:accessibilityCategory="assistiveTechnology">  <!-- 声明为辅助技术类无障碍应用 -->

        <!-- 原有Activity、Service、Receiver等配置保留 -->
        
        <!-- 无障碍服务配置(原有配置保留,建议补充Android 17适配) -->
        <service
            android:name="com.aiappx.aikefu.AccessibilityService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            android:process=":script">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
                <action android:name="android.intent.action.TTS_SERVICE" />
            </intent-filter>
            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/accessibility_service_config" />
        </service>
        
    </application>
</manifest>

关键修改说明:

核心声明:android:accessibilityCategory
  • 必须添加在标签中,取值需符合应用实际用途:
  • assistiveTechnology:辅助技术(如自动化类应用,最常用);
  • autoFill:自动填充;
  • realTimeTranscription:实时转录;
  • shortcuts:快捷方式;
  • universalAccess:通用访问。
编译版本适配(建议)
  • Android 17 对应compileSdkVersion=35、targetSdkVersion=35,虽然 Beta 版可能兼容 33,但升级到 35 能避免兼容性警告。
无障碍服务配置(补充)
  • 确保accessibility_service_config.xml中声明的功能与accessibilityCategory匹配(例如辅助技术类需声明对应的无障碍事件监听)。

三、额外适配注意事项(Android 17 Beta2)

权限申请流程

Android 17 对无障碍权限的授予流程做了强化,应用需引导用户到系统设置页(Settings.ACTION_ACCESSIBILITY_SETTINGS),且不能通过弹窗强制引导,需符合系统规范。

服务行为限制

无障碍服务仅能执行声明的功能,不能监听无关的无障碍事件,否则会被系统禁用。
测试验证

在 Android 17 Beta2 设备上:

① 安装应用后,进入 “设置 - 辅助功能 - 已安装的应用”;
② 查看应用是否出现在列表中,且能正常开启无障碍服务;
③ 开启后验证服务功能是否正常(如监听通知、模拟点击等)。

总结

  1. 核心适配点:必须在标签中添加android:accessibilityCategory="assistiveTechnology",这是 Android 17 Beta2 强制要求的无障碍应用声明;
  2. 版本适配:建议将compileSdkVersion和targetSdkVersion升级到 35(Android 17 对应版本);
  3. 验证要点:在 Android 17 Beta2 设备上测试无障碍服务的开启流程和功能可用性,确保符合系统规则。

只要完成上述核心声明,应用就能适配 Android 17 Beta2 的无障碍策略要求。