簡體   English   中英

用戶關閉所需的應用程序時,可訪問性服務刪除圖標

[英]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);

但是,當用戶關閉應用程序或將其隱藏時,圖標會消失。 我沒有發現任何可以處理這種情況的事件。 有人可以幫我這個忙嗎? 我只想為某些應用繪制圖標,並在用戶關閉該應用后將其刪除。

UPDATE

我使用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
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM