为什么我的无障碍服务要求全屏控制?

Why does my accessibility service ask for full screen control?

我有以下辅助功能配置文件,其中 window 检索被禁用,我只想过滤关键事件:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityFlags="flagRequestFilterKeyEvents"
    android:canRequestFilterKeyEvents="true"
    android:canRequestTouchExplorationMode="false"
    android:canRetrieveWindowContent="false"
    android:description="@string/permissions_accessibility_description"
    android:settingsActivity="" />

然而,Android一直说我想阅读屏幕上的内容并在其他应用程序上显示内容:

有什么方法可以消除我根本不感兴趣的 "View and control screen" 警告?

我对此也很好奇,因为我正在编写一个不以任何方式“查看”或“控制”屏幕的无障碍服务,在 AndroidManifest.xml 文件中不请求此类权限,并且因此,看到这个为我服务的对话框感到很惊讶。

事实证明,此对话框是为您的 AccessibilityService 显示的,因为该对话框本质上是 hard-coded 在启用 any 无障碍服务时出现。

如果 Android 文档以任何方式提到这一点,或者向开发人员解释为什么会出现该对话框,但 Android 文档没有,那将是合理的。

如果我们探索 source code of this screen,有 3 种情况是发出(相同的)启用服务警告,1 种情况是在禁用服务时发出警告,还有一种默认情况(很可能Java 代码有一个“良好实践”,我怀疑它是否真的作为代码执行过)。

这不是一个“真正的”解决方案,但作为一种妥协,我们总是可以提及 accessibility-service XML 标签的 description XML 属性 Android flat-out 谎称我们的应用程序需要任何(或所有)这些功能,link 我们的源代码等