2012-07-15 57 views
1

我有一個使用無障礙服務來監控事件的應用程序。它在Android的版本中一直很好,直到ICS,但果凍豆我沒有太多的運氣。Android無障礙服務向後兼容性和果凍豆

由於文件提到,我在清單文件中添加

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" 

我的服務。這會導致應用程序使用xml的聲明xml方法正常工作。

問題在於向後兼容性。對於版本,如薑餅我現在發現了以下錯誤:

07-15 22:15:56.090: E/ACRA(1168): Caused by: java.lang.SecurityException: Not allowed to start service Intent { cmp=com.example/.MainRunningService (has extras) } without permission android.permission.BIND_ACCESSIBILITY_SERVICE 

我已經更新到兼容的jar希望可以幫助的最新版本,但仍然得到錯誤。

我不知道如何在舊版本和新版本之間獲得兼容性。

如果我從清單中刪除BIND_ACCESSIBILITY_SERVICE,那麼我的應用程序不會在Jelly Bean中顯示,以便能夠切換輔助功能。有什麼建議麼?

回答

3

好的,mark murphy向我建議了一些小小的功能,這就是工作原理。

子類的服務類,所以有它的2個版本。

然後讓在res一個bools.xml文件/目錄值,也一個在res /值-V16目錄

在有一V16布爾is_jelly_bean設置爲true,並在RES一個is_not_jelly_bean /值目錄。

然後在清單中有這樣的事情

<service android:name=".service.MainRunningService" android:enabled="@bool/is_jelly_bean" 
      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/accessibilityservice" /> 
    </service> 



    <service android:name=".service.MainRunningServicePreJellyBean" 
      android:enabled="@bool/is_not_jelly_bean"> 
     <intent-filter > 
      <action android:name="android.accessibilityservice.AccessibilityService" /> 
     </intent-filter> 

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

我一直在尋找這個,謝謝:) – 2012-11-27 14:17:55

+0

我不能讓它下的Android 2.3.6工作,果凍豆是工作的罰款。我認爲該服務正在運行,因爲我看到2服務(一個主要和一個輔助功能服務爲我的進程運行,但我沒有得到2.3.6下的任何onAccessibilityEvent(AccessibilityEvent事件)。任何建議嗎?我想獲取Notification事件。Jelly bean工作正常。thx求助。 – MOST2K2 2012-12-07 06:41:35