最近開發自動腳本插件,用到AccessibilityService 有個問題導致控件獲取不到
排查後發現是 基礎方法 service.getrootview() 返回值爲空
簡單說一下,service需要一些event觸發 才能獲取到getrootview()
解決方法有兩方面:
1.accessibilityservice 配置XML中 (監聽包不對造成event獲取不到從而拿不到rootview)
android:packageNames項目 需要設置爲你偵聽的包或者不填寫
2.如果上述不能解決你的問題說明你監聽的app比較“安靜”,沒什麼event給你監聽,可以自己滑動一下 製造一個event,再獲取rootview就可以了
安卓9以上對event 監聽機制更加嚴格,出現getrootview()爲空的概率較大,需要注意上述兩部分。
Happy hunting everyone.
最新發現( accessibility 的配置 xml 文件的
android:accessibilityFlags="flagReportViewIds"
)
這一項設置可以有效解決很多拿不到 rootview的問題,這個值也可以通過 AccessiblityServiceInfo 來動態修改 。