当用户关闭所需的应用程序时,辅助功能服务会删除图标

Accessibility service remove icon when user close needed application

我使用辅助功能服务在 Google 照片应用程序上绘制图标,并使用下一个代码完成此操作:

AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
    info.packageNames = new String[] {"com.google.android.apps.photos"};
    info.notificationTimeout = 100;
    setServiceInfo(info);

但是当用户关闭或隐藏应用程序时,图标会离开。我没有找到任何可以处理这种情况的事件。谁能帮我解决这个问题。我只想为某些应用程序绘制图标,并在用户关闭此应用程序后将其删除。

更新

我使用了 AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED 事件并通过事件获取包名,但是从 Android N 绘制我的图标时,AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED 发生在我自己的包名上并且图标被删除。

我使用此代码获取所有应用程序的事件:

AccessibilityServiceInfo config = new AccessibilityServiceInfo();
config.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
config.notificationTimeout = 100;

if (Build.VERSION.SDK_INT >= 16) {
  //Just in case this helps
  config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
}
setServiceInfo(config);

然后我在 onAccessibilityEvent 方法中过滤应用程序:

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
  try { // Try to avoid Security exceptions (Seen in Play Console)
    if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
      if (event.getPackageName() != null && event.getClassName() != null) {
        ComponentName componentName = new ComponentName(
          event.getPackageName().toString(),
          event.getClassName().toString()
        );
        // check componentName and do what you want
      }
    }
  }
}