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

标签 java android accessibilityservice talkback accessibility

我使用辅助功能服务在 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
      }
    }
  }
}

关于java - 当用户关闭所需的应用程序时,辅助服务会删除图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347208/

相关文章:

java - 在 Android 3.0 中,当没有 native 代码库时,我无法使用 ndk-build 调试 native 代码错误

即使纵向模式被锁定,Android 应用程序也会自动旋转到横向模式几秒钟

java - 如何在 ADT 上设置 HoloEverywhere?

Android Room 无法处理我的类,因为它无法解决它们的所有依赖项

android - 用户展开通知(状态栏)时不调用 AccessibilityEvent

android - 检测我的无障碍服务是否启用

Java 泛型类型用于枚举实现上的方法签名

java - .NET 相当于 Java 加密技术

android - 如何使用 AccessibilityService 在 Android 中模拟按键

java - 隐藏每个 Activity 中的软按钮