Jelly bean (Android バージョン 4.1.1) を搭載した Android フォンでアクセシビリティ イベントを受信しようとしています。
この問題に対処するいくつかの質問を見てきました (特に JB と JB 以前の互換性に関して):
AccessibilityService は開始されていますが、JellyBean で AccessibilityEvents を受け取りません
Android アクセシビリティ サービスの下位互換性とジェリー ビーン
これらすべての質問(特に最後の質問)によると、下位互換性を確保したくない場合は、次の行を追加するだけです
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
マニフェスト ファイルに xml 構成ファイルを含めます。
これを行いましたが、通知バーに通知が投稿されたときに onAccessibilityEvent 通知を受け取ることができません。これが私のコードです
public class NotificationService extends AccessibilityService {
private static final Logger logger = LoggerFactory.getLogger ("NotificationService");
@Override
public void onCreate()
{
super.onCreate();
logger.trace ("onCreate");
}
@Override
public void onDestroy()
{
super.onDestroy();
logger.trace ("onDestroy");
}
@Override
protected void onServiceConnected() {
logger.trace("onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
info.notificationTimeout = 100;
setServiceInfo(info);
}
@Override
public void onInterrupt() {
// TODO Auto-generated method stub
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
logger.trace("onAccessibilityEvent");
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
logger.info("notification: " + event.getText());
}
}
}
マニフェストファイルでサービスを宣言する方法は次のとおりです
<service android:name=".NotificationService"
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>
ここに私の accessibilityservice.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:notificationTimeout="100" />
アプリを実行すると、サービスが作成されて接続されていることがわかりますが、AccessibilityEvents は受信されません。
ありがとう!