声明应用不是 AccessibilityTool 以符合 google 播放要求

Declaring app as not an AccessibilityTool to comply with google play requirements

当针对 Android SDK (31) 时,google play 要求我们在我们的应用程序中指定 isAccessibilityTool 属性,如果该应用程序不是无障碍工具,那么您必须在您的应用程序中声明,但去哪里?

如果我们没有在您的应用程序中声明 google 假定您正在使用 AccessibilityService API

If you have not declared your app to be an accessibility tool but use the AccessibilityService API, i.e. you have not set the isAccessibilityTool flag in your accessibility service’s metadata file, you will be required to complete an accessibility declaration in Play Console. source

Google Play 控制台现在要求我填写一份表格,说明我为什么在定位 Android 12 时使用 AccessibilityService(我的应用程序不使用它)。

为了更详细地说明这个问题,这里有一些来自 Google 控制台的图片:

我尝试创建 AccessibilityService 的服务并在元数据中将 isAccessibilityTool 设置为 false,但 google 仍然不允许我更新应用程序直到我填写无障碍服务表格:


class MyAccessibilityService: AccessibilityService() {
    override fun onAccessibilityEvent(event: AccessibilityEvent?) {}
    override fun onInterrupt() {}
}

这是 Android清单文件中的服务声明:

<service
  android:name=".MyAccessibilityService"
  android:exported="true">
  <intent-filter>
     <action android:name="android.accessibilityservice.AccessibilityService" />
  </intent-filter>
  <meta-data
     android:name="android.accessibilityservice"
     android:resource="@xml/serviceconfig" />
</service>

这是服务配置文件的内容:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:isAccessibilityTool="false"
    android:packageNames="com.example.my_package"
    tools:targetApi="s" />

我是不是错过了什么?在哪里或如何声明 isAccessibilityTool 属性直到控制台这是应用程序不使用 AccessibilityService API?

更新

我尝试将服务元数据直接包含在应用程序标签中:

<application
   ...>
<meta-data
     android:name="android.accessibilityservice"
     android:resource="@xml/serviceconfig" />
</application>

此外,我尝试在应用程序标签中直接使用 isAccessibilityTool 属性:

<application
....
 tools:targetApi="s"
 android:isAccessibilityTool="false">
</application>

以上都不适合我

最后更新

我检查了合并清单,其中一项服务包含此权限:

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"

我只删除了这一行并开始工作(多亏了 Snorlax for his google play no more is asking me tool fill the form why I'm using AccessibilityService API .

能否查看合并后的AndroidManifest?可能是访问 AccessibilityService API 的库或模块,如果您的应用程序 AndroidManifest 中存在以下行,您必须删除它们,如果不想填写 Google 播放使用可访问性形式:

<intent-filter>
     <action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>

此外,请检查您是否在 AndroidManifest 中的一项服务中无意中请求了无障碍服务的许可:

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"

而且您可能不需要使用 isAccessibilityTool 属性。

您可以在无障碍服务的清单文件的应用程序标签中声明

 <application...
 ...
 android:isAccessibilityTool="false"
 ...
 .. >

 ... />

作为您服务的一个属性,您的代码将是

<service
 android:name=".MyAccessibilityService"
 android:exported="true"
 android:isAccessibilityTool="false">
 <intent-filter>
 <action android:name="android.accessibilityservice.AccessibilityService" 
 />
 </intent-filter>
 <meta-data
 android:name="android.accessibilityservice"
 android:resource="@xml/serviceconfig" />
 </service>

如果您设置了 isAccessibilityTool="false",但仍使用该服务,则需要在 google play conbsole 上完成声明。

点击这里了解更多详情Declaration for apps that are NOT accessibility tools