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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Hank
51 / 42 / 3
Регистрация: 28.12.2011
Сообщений: 239
#1

Receiver не принимает сообщения - Программирование Android

23.03.2013, 01:39. Просмотров 1290. Ответов 4
Метки нет (Все метки)

Привет.
Почему-то receiver не принимает системные броадкасты, можешь какая-то ошибка в моей писанине, а ее "замыленым" взглядом не вижу.

Код:
Java
1
2
3
4
5
6
7
8
9
public class ApplicationStartListener extends BroadcastReceiver {
    Context mContext;
    @Override
    public void onReceive(Context context, Intent intent) {
            mContext = context;
            Toast.makeText(mContext, "FUI", Toast.LENGTH_LONG).show();
            Log.v("Server application FUI", intent.getAction());
    }
}
Манифест:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.sample.Project"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="15"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <receiver android:name=".ApplicationStartListener" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_CHANGED"/>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.SCREEN_ON"/>
                <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE"/>
                <action android:name="android.intent.action.SCREEN_OFF"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 01:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Receiver не принимает сообщения (Программирование Android):

Динамический Receiver в Service перестаёт принимать сообщения - Программирование Android
В классе, который наследуется от Service определен BroadcastReceiver. Когда ловим сообщение о изменении состояния подключения к сети, то...

Receiver - Программирование Android
Добрый день уважаемые форумчане! Помогите разобраться, на сколько я понял receiver нужен для прослушки широковещателных сообщений, т.е к...

WhatsApp call receiver - Программирование Android
После появления звонков можно ли как определить начало и конец звонка как в gsm?

Подружить receiver и service - Программирование Android
вообщем такая ситуация. У меня есть сервис который каждые 10 минут отправляет данные на сервер. Мне нужно сделать так чтоб этот сервис...

AlarmManager и Service or Receiver? - Программирование Android
Целый день искал, но нифига не нашел( то что нашел помогло тоолько частично). Суть вот в чем, у меня есть AlarmManeger как уже всем и так...

Как вызвать Notification в Broadcast Receiver? - Программирование Android
нужно чтобы по событию в классе Broadcast Receiver, а точнее в методе onReceive() запустить метод уведомления например такое...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 21:52 #2
Не ловит ни одно из перечисленных Intent'ов?!
попробуйте воссоздать программный ресивер для проверки...

Добавлено через 2 минуты
Если не путаю и не ошибаюсь Интент PACKAGE_CHANGED не срабатывает на прилоежнии чей PACKAGENAME изменился... . И некоторые ресиверы не срабатывают через определение в манифесте , так что попробуйте перепроверить каждый вариант через программный ресивер

Добавлено через 3 минуты
Стоит взглянуть на ответ к вопросу про BOOT_COMPLETED
http://stackoverflow.com/a/8277222
Hank
51 / 42 / 3
Регистрация: 28.12.2011
Сообщений: 239
24.03.2013, 09:26  [ТС] #3
Да, действительно при программном воссоздании ресивера некоторые Intent принимаются, например, "android.intent.action.SCREEN_ON". Спасибо за совет.
Но только для меня более важным является "android.intent.action.PACKAGE_CHANGED". Т.к. нужно узнать, что было запущено приложение. Я ведь верно определил из документации нужный Intent?
Что значит:
Интент PACKAGE_CHANGED не срабатывает на прилоежнии чей PACKAGENAME изменился...
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
26.03.2013, 18:50 #4
Интент PACKAGE_CHANGED не срабатывает на прилоежнии чей PACKAGENAME изменился... не релевантно я перепутал с PACKAGE_CLEARED
Насчет правильно выбранного интента я сомневаюсь что это оно.
вот ссылка на дискуссию по данной теме
http://stackoverflow.com/questions/3...s-are-launched
По моему мнению нужно отлавливать интенты о запуске приложений и потом смотреть что за приложение
обрати внимание на интент фильтр
XML
1
2
3
4
<intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
Hank
51 / 42 / 3
Регистрация: 28.12.2011
Сообщений: 239
26.03.2013, 22:26  [ТС] #5
Делаю вот так, но что-то не выходит. Замучился уже с этими интентами. А кстати ACTION.SCREEN.ON(OFF) он нормально перехватывает (я для теста проверял).

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class TestActiv extends Activity{
 
    public void onCreate(Bundle bundle){
        super.onCreate(bundle);
        setContentView(R.layout.main);
        final IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_MAIN);
        intentFilter.addCategory(Intent.CATEGORY_LAUNCHER);
 
        BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                Log.v("Server application", "Проба: ");
            }
        };
        registerReceiver(broadcastReceiver, intentFilter);
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 22:26
Привет! Вот еще темы с ответами:

Не принимает USSD сообщения - Смартфоны
Телефон Samsung Galaxy S3 mini. Не отправляются USSD сообщения, где-то месяц назад ещё работало, даже не знаю в связи с чем это могло...

Принимает но не отправляет сообщения! (Socket) - Delphi
Сообщения от клиента приходят на сервер и сервер должен отправить всем клиентам, однако он почему-то только получает но не отправляет, а...

Опубликованный WCF не принимает сообщения - C# WCF
Добрый день! Есть WCF сервис, который принимает в поток входящие POST сообщения. Все работает. Опубликовала на IIS 7. Запустился с горем...

Socket не отсылает сообщения через SEND и не принимает - C++
Когда конектится клиент с сервером, сервер должен отображать то, что передает клиент, т.е. asdf, но он ничего не отображает. В другую...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.03.2013, 22:26
Ответ Создать тему
Опции темы

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