我想为通知区域上显示的每个新通知获取一个事件。为了做到这一点,我使用了接下来展示的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:
android:accessibilityEventTypes="typeNotificationStateChanged" android:accessibilityFeedbackType="feedbackSpoken" android:notificationTimeout="100" />
在 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
}
}
谢谢你们