【问题标题】:Accessibility service remove icon when user close needed application当用户关闭所需的应用程序时,辅助功能服务会删除图标
【发布时间】:2017-10-05 01:25:12
【问题描述】:

我使用辅助功能服务在 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 发生在我自己的包名和图标被删除。

【问题讨论】:

  • 所以,澄清一下,你有时想画一个图标,有时又删除它。而且您不知道何时删除以及何时添加您的图标?
  • @ChrisCM 我想在打开具有所需包名称的应用程序时绘制一些图标,并在关闭此类应用程序时删除图标。
  • 这里没有足够的信息。您应该添加一些代码来显示您何时调用“addIcon”函数以及何时调用“removeIcon”函数。现在我们只能推测你什么时候这样做。例如:在我看来,当您从 com.google.... 包中获取窗口状态更改事件时,您会无差别地调用 add/remove。

标签: java android accessibilityservice talkback accessibility


【解决方案1】:

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

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
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 2022-11-30
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多