应用程序更新后未绑定辅助功能服务

时间:2015-01-02 20:16:49

标签: android android-5.0-lollipop accessibilityservice

我有一个运行良好的应用程序,具有辅助功能服务。到目前为止,它一直在按预期工作。当我尝试构建新的更新版本时,问题出现了。与可访问性服务相关的代码中没有任何更改。但该服务不再绑定到更新的应用程序。日志中没有错误或警告。以下是 manifest.xml 的一部分:

...
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

<application
    android:name=".AppState"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:allowBackup="true">

    // ... several activities, services and bootup receiver goes here...

    <service android:name=".ForegroundMonitor"
      android:label="@string/foreground_monitor_label"
      android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
      <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
      </intent-filter>
      <meta-data android:name="android.accessibilityservice" android:resource="@xml/serviceconfig" />
    </service>
</application>

这是 serviceconfig.xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   android:accessibilityEventTypes="typeViewClicked|typeViewFocused|typeWindowStateChanged"
     android:accessibilityFeedbackType="feedbackGeneric"
     android:notificationTimeout="1000"
     android:canRetrieveWindowContent="false"
     android:description="@string/foreground_monitor_about"
/>

可访问性服务是根据系统注册的,可以启动或停止,如果我在应用程序中更改了服务设置并重新安装应用程序,则会更改服务设置。

但该服务不再绑定到我的应用程序了。 onServiceConnected的{​​{1}}方法未被调用。

我在SO上发现了一些类似的问题:

我已尝试过唯一建议的解决方案,但在我的情况下它不起作用。

根据我的测试,问题仅出现在Android 5.0.1上。在Android 2.3.3上,该应用程序正常运行,服务绑定成功。

有人可以共享这个问题的解决方案,这可能是一个Android错误吗?

更新

我刚刚找到了一个解决方法:它足以重命名扩展ForegroundMonitor的类(在我的情况下是 ForegroundMonitor ),例如通过添加版本控制后缀。此方法的缺点是用户必须重新启用系统中的新辅助功能服务,因为它被视为另一个。理想情况下,如果服务一旦启用,应用程序的更新不应要求此。

所以我仍然对解决方案感兴趣 - 更方便的解决方案。

提前致谢。

0 个答案:

没有答案