如何启动AccessibilityService?

时间:2012-02-16 14:55:28

标签: android service accessibility

我正在尝试使用

开始实现AccessibilityService
Intent mailAccessabilityIntent = new Intent(this, EmailAccessabilityService.class);
startService(mailAccessabilityIntent);

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

2 个答案:

答案 0 :(得分:29)

由于辅助功能服务能够探索屏幕内容并与之交互,因此用户必须在设置>中明确启用服务。可访问性。启用服务后,系统将自动启动它并将其绑定到辅助功能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配置文件来为您的服务提供配置。

元数据属性位于&lt; service&gt;中&lt; intent-filter&gt;之后的声明标记,看起来像这样:

<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

使用哪些标签的更多信息

答案 1 :(得分:1)

我今天刚刚这样做了。创建服务后,使用可访问性意图过滤器在清单文件中正确列出该服务。然后您的服务将显示在settings-accessibility-services下。您可以通过单击它然后将其切换来启动它。如果它甚至可能,我不知道如何通过意图启动它。我认为它的Lee GPS你只能导航用户启动按钮。