Accessibility getrootview 爲空的問題排查與解決

最近開發自動腳本插件,用到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 來動態修改 。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章