当用户关闭所需的应用程序时,辅助功能服务会删除图标
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
}
}
}
}
我使用辅助功能服务在 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
}
}
}
}