Android 获取应用程序页面中的所有按钮

Android 获取应用程序页面中的所有按钮,android,xml,button,layout,Android,Xml,Button,Layout,我用java构建了一个项目,它假设在应用程序中获取页面的smali代码,并返回页面布局中的所有按钮 首先,我为相应的xml文件实现了一个解析器。 解析器搜索页面中的所有按钮。 它工作正常 但是,我有一个问题,因为我注意到smali代码可以动态地将按钮添加到页面的布局中。我想为smali文件实现解析器,但我认为这样做没有意义 我有两个想法,但我不知道它们是否可以应用: 1) 在方法onCreate上运行,同时向xml文件添加视图。 之后,我在页面布局中拥有完整的视图 2) 使用UI层次结构,它返回

我用java构建了一个项目,它假设在应用程序中获取页面的smali代码,并返回页面布局中的所有按钮

首先,我为相应的xml文件实现了一个解析器。 解析器搜索页面中的所有按钮。 它工作正常

但是,我有一个问题,因为我注意到smali代码可以动态地将按钮添加到页面的布局中。我想为smali文件实现解析器,但我认为这样做没有意义

我有两个想法,但我不知道它们是否可以应用:

1) 在方法onCreate上运行,同时向xml文件添加视图。 之后,我在页面布局中拥有完整的视图

2) 使用UI层次结构,它返回页面中视图的层次结构。但我不知道如何以编程的方式使用它,如何舒适地获得它


谢谢,Yinon

为您的activitie(或fragment)视图组运行此功能,所有按钮都将显示在mButtons中

List<Button> mButtons = new ArrayList();

void getAllButtons(ViewGroup v) {
    for (int i = 0; i < v.getChildCount(); i++) {
    View child = v.getChildAt(i);
    if(child instanceof ViewGroup)
        getAllButtons((ViewGroup)child);
    else if(child instanceof Button)
        mButtons.add((Button)child);
    }
}
List mButtons=new ArrayList();
作废getAllButtons(视图组v){
对于(int i=0;i
虽然我的项目是外部的,但我可以使用它吗?我需要反编译apk,并通过所有的活动,并获得按钮。你唯一需要的是查看组,其中所有的按钮。