sdmaid
sdmaid copied to clipboard
ACS based cache deletion fails on some tablets if the settings use a dual pane layout
SD Maid F: VERSIONNAME: 5.3.10, VERSIONCODE: 50310
On some tablets, i.e. in this case a:
Lenovo/TB-J616F_EEA/TB-J616F:11/RP1A.200720.011/TB-J616F_S000042_211212_ROW:user/release-keys
the system settings window has a dual pane layout, with the menu showing on the left, the app details on the right. The left side menu loads faster than the right side menu.
Now if SD Maid scans the UI before the right-side app details pane is fully loaded, the ACS matcher may already find a match on the left side and click that.
In this particular case it's a Lenovo Tablet running Android 11 and the system locale is set to french.
SD Maids first ACS data is just the left side window:
Current root: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():0: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-1: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():--2: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/content, pkgName=com.android.settings
crawl():---3: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_parent, pkgName=com.android.settings
crawl():----4: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/content_frame, pkgName=com.android.settings
crawl():-----5: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():------6: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/ll_landleft, pkgName=com.android.settings
crawl():-------7: className=android.view.ViewGroup, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/settings_homepage_container, pkgName=com.android.settings
crawl():--------8: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/ll_top, pkgName=com.android.settings
crawl():---------9: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/toplevel_actionbar_group, pkgName=com.android.settings
crawl():----------10: className=android.view.ViewGroup, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/toplevel_toolbar, pkgName=com.android.settings
crawl():-----------11: className=android.widget.TextView, text=Paramètres, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/toplevel_toolbar_title, pkgName=com.android.settings
crawl():--------8: className=android.widget.ScrollView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/main_content_scrollable_container, pkgName=com.android.settings
crawl():---------9: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/homepage_container, pkgName=com.android.settings
crawl():----------10: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/search_item_fixed, pkgName=com.android.settings
crawl():-----------11: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/search_bar, pkgName=com.android.settings
crawl():------------12: className=android.view.ViewGroup, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/search_homepage, pkgName=com.android.settings
crawl():-------------13: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/search_homepage_img, pkgName=com.android.settings
crawl():-------------13: className=android.widget.TextView, text=Recherche, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/tv_search_text, pkgName=com.android.settings
crawl():----------10: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/contextual_cards_content, pkgName=com.android.settings
crawl():-----------11: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():------------12: className=androidx.recyclerview.widget.RecyclerView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/card_container, pkgName=com.android.settings
crawl():-------------13: className=com.google.android.material.card.MaterialCardView, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/suggestion_card, pkgName=com.android.settings
crawl():--------------14: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.TextView, text=Ajouter des informations d'urgence, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/close_button, pkgName=com.android.settings
crawl():------------------18: className=android.widget.TextView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():------------------18: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-------------13: className=com.google.android.material.card.MaterialCardView, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/suggestion_card, pkgName=com.android.settings
crawl():--------------14: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.TextView, text=Rejoignez le programme d’expérience utilisateur, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/close_button, pkgName=com.android.settings
crawl():------------------18: className=android.widget.TextView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():------------------18: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-------------13: className=com.google.android.material.card.MaterialCardView, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/suggestion_card, pkgName=com.android.settings
crawl():--------------14: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.TextView, text=Définir les horaires de l'éclairage nocturne, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():-----------------17: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=com.android.settings:id/close_button, pkgName=com.android.settings
crawl():------------------18: className=android.widget.TextView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():------------------18: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------10: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/main_content_land, pkgName=com.android.settings
crawl():-----------11: className=android.widget.LinearLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/container_material, pkgName=com.android.settings
crawl():------------12: className=android.widget.FrameLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/list_container, pkgName=com.android.settings
crawl():-------------13: className=androidx.recyclerview.widget.RecyclerView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=com.android.settings:id/recycler_view, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=ID Lenovo, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Non connecté, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Réseau et Internet, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=WLAN, conso des données et point d'accès, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Appareils connectés, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Bluetooth, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Écran, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Luminosité, mode de protection des yeux, Rotation intelligente, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Son, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Volume, vibreur, Ne pas déranger, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Confidentialité, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Autorisations, activité du compte, données à caractère personnel, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Localisation, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Désactivé, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Sécurité, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Verrouillage de l’écran, déverrouillage facial, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Mode productivité, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Désactivé, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Centre d'expérience IA, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Reconnaissance de scène IA, vision informatique, etc., isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Accessibilité, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Lecteurs d'écran, affichage, commandes d'interaction, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Comptes, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Google, SFR et OneDrive, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Applis et notifications, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Applications récentes, applications par défaut, isClickable=false, isEnabled=true, viewIdResourceName=android:id/summary, pkgName=com.android.settings
crawl():--------------14: className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():---------------15: className=android.widget.ImageView, text=null, isClickable=false, isEnabled=true, viewIdResourceName=android:id/icon, pkgName=com.android.settings
crawl():---------------15: className=android.widget.RelativeLayout, text=null, isClickable=false, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
crawl():----------------16: className=android.widget.TextView, text=Stockage, isClickable=false, isEnabled=true, viewIdResourceName=android:id/title, pkgName=com.android.settings
Clicking on className=android.widget.LinearLayout, text=null, isClickable=true, isEnabled=true, viewIdResourceName=null, pkgName=com.android.settings
1643963218844 V/ACC:Service: onAccessibilityEvent(event=EventType: TYPE_WINDOW_CONTENT_CHANGED; EventTime: 202284; PackageName: com.android.settings; MovementGranularity: 0; Action: 0; ContentChangeTypes: [CONTENT_CHANGE_TYPE_SUBTREE]; WindowChangeTypes: [] [ ClassName: android.widget.FrameLayout; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; Enabled: true; Password: false; Checked: false; FullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: 0; ScrollY: 0; MaxScrollX: 0; MaxScrollY: 0; ScrollDeltaX: -1; ScrollDeltaY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0)
The ACS matcher for French on AOSP Android 11+ looks first for Espace de stockage et cache
then Stockage
. The bottom of the layout has Stockage
in a nested TextView
with a clickable parent LinearLayout
which is the exact same constellation that the app details page has. So SD Maid clicks it and gets stuck :shrug:..
https://user-images.githubusercontent.com/1439229/152645695-f3133af9-0f23-4a4b-9fef-e524c9632955.mp4