在android中获取当前窗口的视图层次结构

在android中获取当前窗口的视图层次结构,android,performance,layout,Android,Performance,Layout,是否有任何方法可以动态重画当前窗口中显示的视图。所以基本上我想动态地重画当前在另一个屏幕上显示的内容 为此,我需要当前显示的视图及其层次结构 我试过了。通过此操作,我可以获取调试应用程序的视图层次结构,但无法获取生产应用程序的视图层次结构 我还尝试了AccessibilityService,使用它我可以获取当前窗口所有节点的AccessibilityNodeInfo树,但无法获取实际视图 有人能帮我吗 有什么方法可以动态重画当前窗口中显示的视图吗 您甚至无法获取视图,除非它是您自己的内容。例如,

是否有任何方法可以动态重画当前窗口中显示的视图。所以基本上我想动态地重画当前在另一个屏幕上显示的内容

为此,我需要当前显示的视图及其层次结构

我试过了。通过此操作,我可以获取调试应用程序的视图层次结构,但无法获取生产应用程序的视图层次结构

我还尝试了AccessibilityService,使用它我可以获取当前窗口所有节点的AccessibilityNodeInfo树,但无法获取实际视图

有人能帮我吗

有什么方法可以动态重画当前窗口中显示的视图吗

您甚至无法获取视图,除非它是您自己的内容。例如,给定
活动
中的任何
视图
,可以向上遍历父链到根
视图
,然后从那里展开。但您无法从另一个应用程序获取
视图
对象

我想在另一个屏幕上动态重画当前屏幕上显示的内容

欢迎您在Android 5.0+上使用媒体投影API。这些不提供视图层次结构,但提供用户权限访问当前屏幕内容的屏幕截图

我还尝试了AccessibilityService,使用它我可以获取当前窗口所有节点的AccessibilityNodeInfo树,但无法获取实际视图

这是因为
视图
对象处于另一个进程中

有什么方法可以动态重画当前窗口中显示的视图吗

您甚至无法获取视图,除非它是您自己的内容。例如,给定
活动
中的任何
视图
,可以向上遍历父链到根
视图
,然后从那里展开。但您无法从另一个应用程序获取
视图
对象

我想在另一个屏幕上动态重画当前屏幕上显示的内容

欢迎您在Android 5.0+上使用媒体投影API。这些不提供视图层次结构,但提供用户权限访问当前屏幕内容的屏幕截图

我还尝试了AccessibilityService,使用它我可以获取当前窗口所有节点的AccessibilityNodeInfo树,但无法获取实际视图


这是因为
视图
对象处于另一个进程中。

谢谢您提供的信息。。但是你能解释一下“这是因为视图对象处于另一个进程中”是什么意思吗。Thanks@user3265443:Android应用程序在操作系统进程中运行,大多数操作系统中的应用程序也是如此。而且,与大多数操作系统一样,出于明显的安全原因,一个进程无法访问另一个进程的内存。好的。。你是说AccessibilityService在android中作为一个单独的进程运行?但是AccessibilityService如何知道视图的所有这些信息呢。这是我打印的日志AccessibilityNodeInfoAccessibilityNodeInfo@8000927b; boundsInParent:Rect(0,0-36,36);边界屏幕:Rect(5221488-5581524);packageName:com.google.android.googlequicksearchbox;类名:android.widget.LinearLayout;文本:空;错误:null;maxTextLength:-1;内容描述:主屏幕1/1,设置;viewIdResName:空;可检查:假;勾选:假;聚焦:假;聚焦:假;etc@user3265443:Android框架将可访问性信息发布到核心操作系统进程,从而使可访问性服务和助手(Android 6.0 assist API)可以使用这些数据。非常感谢您提供的所有信息谢谢您提供的信息。。但是你能解释一下“这是因为视图对象处于另一个进程中”是什么意思吗。Thanks@user3265443:Android应用程序在操作系统进程中运行,大多数操作系统中的应用程序也是如此。而且,与大多数操作系统一样,出于明显的安全原因,一个进程无法访问另一个进程的内存。好的。。你是说AccessibilityService在android中作为一个单独的进程运行?但是AccessibilityService如何知道视图的所有这些信息呢。这是我打印的日志AccessibilityNodeInfoAccessibilityNodeInfo@8000927b; boundsInParent:Rect(0,0-36,36);边界屏幕:Rect(5221488-5581524);packageName:com.google.android.googlequicksearchbox;类名:android.widget.LinearLayout;文本:空;错误:null;maxTextLength:-1;内容描述:主屏幕1/1,设置;viewIdResName:空;可检查:假;勾选:假;聚焦:假;聚焦:假;etc@user3265443:Android框架将可访问性信息发布到核心操作系统进程,从而使可访问性服务和助手(Android 6.0 assist API)可以使用这些数据。非常感谢您提供的所有信息