2014-12-19 3 views
1

Я построю проект в java, который предположительно получит smali-код для страницы в приложении и вернет все кнопки в макете этой страницы.получить все кнопки на странице приложения

Во-первых, я применил синтаксический анализатор для соответствующего XML-файла. Парсер ищет все кнопки на странице. Он работает правильно.

Однако у меня проблема, потому что я заметил, что smali-код может добавлять динамические кнопки к макету страницы. Я решил реализовать парсер для файла smali, но, думаю, не имеет смысла это делать.

У меня есть 2 идеи, но я donwt знаю, если они могут быть применены:

1) для запуска на методе OnCreate и добавьте вид на файл XML в то же время. После этого у меня есть полные виды в макете страницы.

2) используйте иерархию пользовательского интерфейса, которая возвращает иерархию представлений на странице. Но я не знаю, как это использовать программно и удобно.

спасибо, Yinon

ответ

1

Выполнить это для вашего activitie (или осколка) 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 и пройти все действия и получить кнопки. –

+0

Единственное, что вам нужно - это ViewGroup, где все кнопки. – grig

Смежные вопросы