2015-05-07 2 views
0

У меня есть приложение:Запуск приложения с флагами

public class TestApplication extends Application { 
    @Override 
    public void attachBaseContext(Context context){ 
     if (SomeGlobalState.doStuff) { 
      doStuff(); 
     } 
    } 
} 

я хотел бы сделать некоторое множество до этого приложения в attachBaseContext, которые могут меняться в зависимости от флага, я могу передать, что не всегда передается , поэтому я не хочу добавлять его в метаданные манифеста.

Есть ли что-то в каркасе Android, что я не знаю, где я могу передать дополнения «Intent-like» к приложению, или мне придется сделать что-то взломанное, чтобы сообщить ему, что я хочу его состояние изменить?

+0

Посмотрите на https://developer.android.com/guide/topics/manifest/meta-data-element.html – dhke

+0

Прочтите вопрос. –

+0

Хм. Откуда возникает флаг, т. Е. Кто устанавливает флаг в зависимости от какого условия? Я думаю, что именно здесь происходит мое замешательство. – dhke

ответ

0

Чтобы сделать это без файла, вы можете использовать adb shell setprop <propname> <value>, а затем в вашем attachBaseContext вы можете сделать что-то вроде этого

Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/getprop", MY_PROPERTY}); 
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
String propertyValue = reader.readLine(); 

Затем вы можете проверить, что propertyValue равно, что вы ожидали. Отлично подходит для тестирования.

1

Есть ли что-то в Android рамки, которые я не знаю о том, где я могу передать «Намерение подобные» статистов в приложение

Нет, но это не нужно.

или мне придется что-то сделать, чтобы сообщить ему, что я хочу, чтобы его состояние изменилось?

Если состояние постоянное - и ваш вопрос предполагает, что это - просто используйте SharedPreferences для этого состояния. Application может извлекать их и использовать их. И, если Application должен предпринять шаги по изменению состояния, Application может зарегистрировать прослушиватель для изменений SharedPreferences.

Если состояние не является постоянным - это означает, что приложение всегда запускается в состоянии A и может переключиться на состояния B-Z на основе работы во время выполнения - просто вызовите метод на Application в точке изменения состояния. Application может удерживать состояние в элементе данных.

+0

Я надеялся на что-то другое, кроме файла: - \ –

+1

@Kairos: Тогда я понятия не имею, что вы ищете. – CommonsWare

+0

вот ответ, который я ищу ... что что-то другое, кроме файла, существует или не существует для этой цели. –

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