2

我想为通知区域上显示的每个新通知获取一个事件。为了做到这一点,我使用了接下来展示的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
    }
}

谢谢你们

4

0 回答 0