【问题标题】:How to start AccessibilityService?如何启动 AccessibilityService?
【发布时间】:2012-02-16 14:55:28
【问题描述】:

我正在尝试通过使用来启动 AccessibilityService 的实现

Intent mailAccessabilityIntent = new Intent(this, EmailAccessabilityService.class);
startService(mailAccessabilityIntent);

我的问题是 onServiceConnected() 从未被调用过。 如何正确启动此服务?

【问题讨论】:

    标签: android service accessibility


    【解决方案1】:

    由于无障碍服务能够探索屏幕内容并与之交互,因此用户必须在“设置”>“无障碍”中明确启用服务。启用服务后,系统会自动启动该服务并将其绑定到无障碍 API。

    确保您在应用程序清单中声明您的服务:

    <service android:name=".MyAccessibilityService"
             android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
         <intent-filter>
             <action android:name="android.accessibilityservice.AccessibilityService" />
         </intent-filter>
         . . .
     </service>
    

    您还需要通过覆盖 setServiceInfo(AccessibilityServiceInfo) 或添加元数据属性和 XML 配置文件来为您的服务提供配置。

    元数据属性位于 标签之后的 声明中,如下所示:

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

    您引用的 XML 配置(在本例中为accessibilityservice.xml)如下所示:

    <accessibility-service
        android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
        android:packageNames="foo.bar, foo.baz"
        android:accessibilityFeedbackType="feedbackSpoken"
        android:notificationTimeout="100"
        android:accessibilityFlags="flagDefault"
        android:settingsActivity="foo.bar.TestBackActivity"
        android:canRetrieveWindowContent="true"
        . . .
    />
    

    http://developer.android.com/reference/android/R.styleable.html#AccessibilityService 处有更多关于您可以使用哪些标签的信息

    【讨论】:

    • 你真的应该得到很多支持。因为即使是developer.android.com/guide/topics/ui/accessibility/… 的文档也是错误的。您已经展示了制作无障碍服务的正确方法
    • @alanv "一旦启用服务,系统将自动启动它并将其绑定到可访问性 API。"我有疑问,我的无障碍服务一旦启用就可以工作。当它崩溃时,它会导致在 tue 设置中启用,但不会导致执行服务。为什么系统在崩溃后没有重新启动我的服务,但结果仍然启用?
    • @v1sc3rr4k 一旦系统关联服务(如Accessibility Service)崩溃,系统不会重新启动,直到权限重置或操作系统重新启动。尝试撤销权限并重新启用,服务将重新启动。希望对您有所帮助。
    • @eyal 如果此答案或任何答案解决了您的问题,请单击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    • 您能告诉我们如何将数据从活动@alanv 传递到辅助功能服务吗?
    【解决方案2】:

    我今天刚刚完成了这个。一旦您的服务被创建并在清单文件中正确列出,并带有可访问性意图过滤器。然后您的服务将出现在设置-辅助功能-服务下。您可以通过单击它然后打开它来启动它。如果可能的话,我还不知道如何通过意图启动它。我认为它的李 GPS 你只能导航用户开始按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多