将应用声明为不是 AccessibilityTool 以符合 google play 要求

Posted

技术标签:

【中文标题】将应用声明为不是 AccessibilityTool 以符合 google play 要求【英文标题】:Declaring app as not an AccessibilityTool to comply with google play requirements 【发布时间】:2022-01-15 15:22:57 【问题描述】:

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

如果我们没有在你身上声明,谷歌应用会假定你正在使用AccessibilityService API

如果您尚未将您的应用声明为无障碍工具,但使用了 AccessibilityService API,即您尚未在无障碍服务的元数据文件中设置 isAccessibilityTool 标志,则您需要在 Play 管理中心完成无障碍声明. source

Google Play 管理中心现在要求我填写我在面向 Android 12 时为什么使用 AccessibilityService(我的应用不使用它)的表格。

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

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


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


这是 AndroidManifest 文件中的服务声明:

<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>

这里是serviceconfig文件的内容:

<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 他的answer google play 不再问我工具填写表格为什么我使用AccessibilityService API。

【问题讨论】:

【参考方案1】:

你能检查合并的 AndroidManifest 吗?也许它是访问AccessibilityService API 的库或模块,如果您的应用程序 AndroidManifest 中存在以下行,如果不想填写 Google Play 使用可访问性表单,则必须删除以下行:

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

另外,请检查您是否在 AndroidManifest 中的一项服务中意外请求无障碍服务的权限:

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"

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

【讨论】:

谢谢,但我不是要创建 AccessibilityService,我只需要将我的应用程序标记为不是 AccessibilityTool,所以我 google 接受我的更新,我更新了问题,请再次阅读并查看在源链接 其实,如果你仔细阅读问题你可以看到我已经尝试创建无障碍服务 你能检查合并的清单吗?也许它正在使用一个库。 Snorlax 确实有效我检查了我的应用程序和服务有 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" 我没有注意到它在那里,直到你说检查合并的清单跨度> 谢谢。我认为我应该得到这一点。我更新了我的答案。 :) 将其添加到相关服务中就足够了。 android:isAccessibilityTool="false"【参考方案2】:

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

 <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

【讨论】:

我已经尝试将其声明为服务的属性,但我会尝试将其直接放入应用程序标签中---谢谢 那么酷,让我们看看这是否有效 同样的 google play 不允许我更新我的应用 越来越令人讨厌了 请检查此 (support.google.com/googleplay/android-developer/answer/…) 声明,适用于不是辅助工具的应用程序。你需要告诉谷歌你的应用为什么使用这项服务,但它不是无障碍工具。

以上是关于将应用声明为不是 AccessibilityTool 以符合 google play 要求的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候需要将异步函数的返回类型声明为未来对象?

为什么“auto”将字符串声明为const char *而不是std :: string?

qt动态库编译,是不是只要声明

是否有任何理由应该将 C++ 11+ std::mutex 声明为全局变量,而不是作为函数参数传递给 std::thread ?

像写Flutter一样开发Android原生应用

私有成员是不是应该在惯用的 C# 中显式声明为私有? [关闭]