我想为通知区域中显示的每个新通知获取一个事件。为了做到这一点,我使用accessibilityEvent,如下所示。 我的问题是我遇到了太多事件。我甚至得到了自己的应用程序事件。但其中许多(大多数)不是关于通知。如果手机正在充电,我会每隔10秒钟开机一次。在模拟器中,我每隔2秒(或多或少)从我的应用程序中获取一个事件。
所以问题是,有没有办法知道任务栏中是否显示新通知? 或者,我如何浏览所有与通知无关的事件?
这是我使用的代码:
在清单中:
<service android:name=".MyAccessibilityEventClass" 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>
文件res / xml / accessibilityservice.xml:
机器人:accessibilityEventTypes = “typeNotificationStateChanged” 机器人:accessibilityFeedbackType = “feedbackSpoken” 机器人:notificationTimeout = “100” /&GT;
在MyAccessibilityEventClass中:
@Override public void onAccessibilityEvent(AccessibilityEvent event)
{ if(event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED)
{ final String s = String.valueOf(event.getPackageName());
ShowToast(s); <-- Too many messages because too many events
}
}
谢谢大家