2014-12-19 59 views
1

我使用java构建项目,该项目假设在应用中获取页面的smali代码,并返回此页面布局中的所有按钮。获取应用页面中的所有按钮

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

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

我有一个2个想法,但我donwt知道他们是否可以适用:

1)对方法的onCreate运行,并在同一时间添加欣赏到XML文件。之后,我在页面布局中拥有完整的视图。

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

感谢,Yinon

回答

1

运行此为您的应用工作的(或片段的)ViewGroup中,所有按钮将在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); 
    } 
} 
+0

虽然我的项目是外部的,我可以使用它吗? 我需要反编译apk,并通过所有的活动,并获得按钮。 – 2014-12-20 21:26:06

+0

您需要的唯一东西是ViewGroup所有按钮。 – grig 2014-12-21 09:40:01

相关问题