我正在尝试创建一个包含chrome访问过的网站记录器功能的应用
这是我的AccessibilityService
class CoreService : AccessibilityService(){
override fun onInterrupt() {
return
}
var TAG = "app:"
override fun onServiceConnected() {
Log.i(TAG,"Connected")
}
override fun onAccessibilityEvent(event: AccessibilityEvent) {
Log.i(TAG,"onAccessibilityEvent")
onChromeActivity(getRootInActiveWindow())
}
fun onChromeActivity(nodeInfo: AccessibilityNodeInfo) {
var result = "|"
var arra = nodeInfo.findAccessibilityNodeInfosByText("http");
for (i in 0 until arra.size) {
result += "\n" + arra.get(i).toString();
}
Log.i(TAG,"result: $result")
}
}
xml配置
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityFlags="flagDefault|flagIncludeNotImportantViews|flagRequestTouchExplorationMode|flagRequestEnhancedWebAccessibility|flagReportViewIds|flagRetrieveInteractiveWindows"
android:accessibilityEventTypes="typeWindowStateChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="0"
android:canRetrieveWindowContent="true"
android:packageNames="com.android.chrome"
android:description="@string/desc"/>
到目前为止,我正在获取此日志猫
2018-11-07 17:08:15.516 19631-19631 / com.jmg21.omgi I / app ::结果:| android.view.accessibility.AccessibilityNodeInfo@8000ccce; boundsInParent:Rect(0,0-681,131); boundsInScreen:Rect(115,71- 796,202); packageName:com.android.chrome;班级名称: android.widget.EditText;文字:https://www.google.com;错误:null; maxTextLength:-1; contentDescription:null; viewIdResName: com.android.chrome:id/url_bar;可检查:false;检查:错误; 专注:真实;重点:假;选择:错误; clickable:true; longClickable:true; contextClickable:false;已启用:true;密码: 假;可滚动:false;动作:依此类推...
问题是:
1。如果我尝试去其他站点,我只会一次得到这个
2。我无法获取网址
请帮助并提前谢谢!
答案 0 :(得分:0)
response to a similar question对事件本身使用深度优先搜索,而不是获取活动窗口的根。
我现在正在使用此代码,它确实可以成功获取每个访问的站点的URL。 不过,如果您想更快地解析节点(每个事件的DFS确实会占用大量时间和资源),则可以筛选特定事件,例如“ TYPE_VIEW_TEXT ...”,因为该事件会随着用户在Chrome中输入而触发多功能框,您无需等待页面加载。
答案 1 :(得分:0)
尝试添加typeWindowContentChanged
可访问性事件类型:
android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"