Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94
#1

Как вызвать Activity не из Activity? - Программирование Android

16.05.2014, 00:49. Просмотров 1878. Ответов 2
Метки нет (Все метки)

Приложение перехватываем входящие СМС. Есть класс унаследованный от BroadcastReceiver, который обозначен в манифесте как приемник сообщений. Все хорошо срабатывает, принятая СМС-ка передается в этот класс. Этот класс распаковывает Intent, вызвавший этот класс (как раз содержащий СМС-ку) и, перепаковывая его, вызывает Activity, которая должна обработать и вывести СМС-ку. Все работает до самого context.startActivity , ошибок не выдается, но и активити нужная не открывается.
В интенте установлен флаг FLAG_ACTIVITY_NEW_TASK (нужен, если активити вызывать не из другой активности. Попросту говоря если вызываем активность не из таска, но этот таск нужно создать и там запускать активити). Все бы хорошо, но активити не стартует...

Приведу код ресивера:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class SmsReceiverBroadcast extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        /*
         * Получили входящее СМС. Перепаковываем интент и вызываем нашу активити, которая дешифрует письмо
         */
        try {
        Bundle bundle = intent.getExtras();    
        Object pdus = (Object) bundle.get("pdus");
        SmsMessage msg = SmsMessage.createFromPdu(pdus.toString().getBytes());
        Intent in = new Intent("CryptedSMS");
        in.putExtra("CryptedSMS", bundle);
        in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(in);
        
        }catch(NullPointerException e) {
            Toast.makeText(context, "Схватил нулл где-то. смотри чего в коде не так", Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }
    }      
}
Нужная активити находится и исключения ActivityNotFoundException не генерируется. Все бы хорошо, но она не отображается. Куда копать, ребят?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 00:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вызвать Activity не из Activity? (Программирование Android):

Вызвать из одной activity функцию другой activity - Программирование Android
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать? Допустим у меня есть основная активити и...

Как вызвать другой activity в android ? - Программирование Android
Как вызвать другой activity в android ??? Добавлено через 1 минуту @Override public void onClick(View v)...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Из одного Activity получить значение другого Activity - Программирование Android
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new Intent(getBaseContext(),...

2
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
16.05.2014, 08:09 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Может так:
Java
1
this.context.startActivity(new Intent(this.context, MyActivity.class));
1
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94
16.05.2014, 21:49  [ТС] #3
Цитата Сообщение от Rube Посмотреть сообщение
Может так
не может. вызвать активити нужно НЕ из активити. У BroadcastReceiver просто нет поля context, и вообще он никак не связан с контекстами, кроме как принимает в качестве параметра у своему обязательному методу onReceive(). В моем коде нет ошибок, просто активити не всплывает. К тому же Intent лучше не трогать. Он у меня параметры передает...

Добавлено через 54 минуты
Цитата Сообщение от Rube Посмотреть сообщение
Может так
Беру свои слова назад. Частично. Спасибо вам. В частности за то, что подсказали хороший конструктор Intent. Я новичок в этом деле, учусь. Старался вызывать активити по их Action (стал получать ActivityNotFoundException). О том, что можно по имени класса обратиться не подумал, да и не знал, чего уж лукавить. Написал

Java
1
2
3
4
5
Intent in = new Intent(context, MessageReceiver.class);
        in.setAction("CryptedSMS");
        in.putExtra("SMS", bundle);
        in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(in);
Все заработало. Активити вызывается. Тему можно закрывать и оставить поколениям
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 21:49
Привет! Вот еще темы с ответами:

Из одной Activity запустить функцию другой Activity - Программирование Android
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание)...

Создание Activity в другом Activity - Программирование Android
Нормально ли создавать экземпляр какого-либо Activity в текущем Activity? Дело в том, что код, нужный для работы с данными находится в...

Вызвать из ListView новое Activity (где задействован SimpleAdapter) - Программирование Android
Привет Всем! Я купил себе android... и вдруг возникли мысли ...почему бы не сделать приложения.... и не изучить вообщем язык...

Вывод activity в activity - Программирование Android
Добрый день. У меня есть две activity мне необходимо вывести одну в другой, а именно что бы меню activity1 осталось прежнем, а в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru