Android でアクセシビリティ サービスを作成しました。4.2 (Jelly Bean) と 5.1 (Lollipop) では完全に動作しますが、4.4 (KitKat) では動作しません。
KitKat では、イベントを受信せず、まったく呼び出しませんonAccessibilityEvent
。
私は何か間違ったことをしていますか?
これが私の実装です:
アクセシビリティサービス.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeNotificationStateChanged"
android:accessibilityFeedbackType="feedbackAllMask"
android:canRetrieveWindowContent="true"
android:description="@string/app_name"
android:notificationTimeout="100" />
myAccessibilityService.java
public class myAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent e) {
if (e.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
Log.d(TAG, "NOTIFICATION!!");
}
}
@Override
protected void onServiceConnected() {
Log.d(TAG, AccessibilityService Connected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
info.flags = AccessibilityServiceInfo.DEFAULT;
info.notificationTimeout = 100;
setServiceInfo(info);
}
@Override
public void onInterrupt() {
Log.d(TAG, "myAccessibilityService onInterrupt Called");
}
}
AndroidManifest.xml
<service
android:name=".myAccessibilityService"
android:enabled="true"
android:label="@string/app_name"
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>
設定に移動してサービスをオンにすると、onServiceConnected
が呼び出され、オンで実行中であると表示されますが、呼び出されませんでしonAccessibilityEvent
た。
私が言ったように、それは JellyBean と Lollipop で動作します。では、何が問題になるのでしょうか?