Как правильно работать с классами, не имеющимися в Android SDK?

398
07 февраля 2017, 19:44

Например мне нужно выдвинуть строку состояния (статусбар). Для этого есть метод expand в классе StatusBarManager. Как мне его вызвать? Я примерно понимаю так:

В корне проекта создать папку android, в ней папку app и в ней создать класс StatusBarManager с методом expand без тела.

package android.app.StatusBarManager;
public class StatusBarManager {
public void expand() {}
}

Затем в активности

StatusBarManager sbm = (StatusBarManager) getSystemService("statusbar");
sbm.expand();

Получится ли так добиться выдвигания статусбара? По идее скомпилируется класс и выполнится точь-в-точь как класс из фреймворка. Если так ничего не получится, то тогда каким образом выполняется обычный скомпилированный код, который поставляется в SDK? Что там находится? Почему выполняется код из фреймворка, а не из SDK?

Answer 1

Для этого есть метод expand в классе StatusBarManager. Как мне его вызвать?

С помощью рефлексии, например.

Вариант, предложенный Вами, упадет во время выполнения с ClassCastException.

Вы определяете класс StatusBarManager, далее Вы используете этот класс в классе активити (явно указывая, что этот класс необходимо импортировать из Вашего пакета).

Метод getSystemService("statusbar") возвращает объект класса StatusBarManager, и это не тот класс, который определили Вы, а системный.

Далее Вы пытаетесь явно преобразовать объект класса StatusBarManager (системный) к классу StatusBarManager, созданному Вами. Так как это преобразование невозможно, то будет сгенерировано исключение ClassCastException.

READ ALSO
Кидает android.os.NetworkOnMainThreadException

Кидает android.os.NetworkOnMainThreadException

Пишу прогу для Android но при переходе на активити Intent in = new Intent(getApplicationContext(), OtzivyActivityclass) Кидает ошибку android

466
Помогите с неизвестной ошибкой [требует правки]

Помогите с неизвестной ошибкой [требует правки]

Помогите с неизвестной ошибкой

389
Ajax + Spring MVC

Ajax + Spring MVC

Есть jsp-страница со скриптом

465
Медленная работа с БД через PreparedStatement

Медленная работа с БД через PreparedStatement

Как мне в этом коде, сделать так, чтобы я верно использовал PrepareStatement? Я уже всю реализацию ДАО не скидываю, так как очень много кодаВ моем коде...

458