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

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

Войти
Регистрация
Восстановить пароль
 
alex_81
0 / 0 / 0
Регистрация: 09.08.2016
Сообщений: 2
#1

BroadcastReceiver, считывание состояние телефона - Программирование Android

09.08.2016, 13:57. Просмотров 261. Ответов 4
Метки нет (Все метки)

Добрый день!

Создал вот такой класс, для считывания состояния телефона во время звонка.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class CallReceiver extends BroadcastReceiver {
    String phoneNumber = "";
    private int id = 2;
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
            //получаем исходящий номер
            phoneNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
            id = 14;
        } else if (intent.getAction().equals("android.intent.action.PHONE_STATE")){
            String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
            if (phone_state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                //телефон звонит, получаем входящий номер
                id = 10;
                phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
            } else if (phone_state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
                //телефон находится в режиме звонка (набор номера / разговор)
                id = 20;
            } else if (phone_state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
                id = 30;
                //телефон находиться в ждущем режиме. Это событие наступает по окончанию разговора, когда мы уже знаем номер и факт звонка
            }
        }
    }
    public int getId() {
        id=id+1;
        return id;
    }
Зарегистрировал его в манифесте:
XML
1
2
3
4
5
6
7
8
9
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
 
  <receiver android:name="CallReceiver">
            <intent-filter android:priority="100">
                <action android:name="android.intent.action.PHONE_STATE"/>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
        </receiver>
Но звонки не обрабатываются методом onReceive. Почему так происходит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2016, 13:57     BroadcastReceiver, считывание состояние телефона
Посмотрите здесь:

Как сохранить состояние Service после перезагрузки телефона? - Программирование Android
Как сохранить состояние Service после перезагрузки телефона??? т.е мне нужно чтоб сервис начал работать не сначала, а на том месте где...

BroadcastReceiver - Программирование Android
У меня такой вопрос если я создал ресивер и прописал его в манифесте. Мой ресивер прослушивает определенные интенты. И у меня такой вопрос...

Уведомления в BroadcastReceiver - Программирование Android
Привет, уважаемые! Прикрутил BroadcastReceiver, мониторю входящие смс, пытаюсь отключить звук входящего смс если оно удовлетворяет моим...

BroadcastReceiver и startActivity - Программирование Android
У меня есть служба и BroadcastReceiver. Когда приходит событие, то я вызываю startService. Если служба не запущена, то она запускается и...

BroadcastReceiver + static переменная - Программирование Android
Работая с бродкаст ресивером задался вопросом, как же он всё-таки работает?) Есть следующий код, который фиксирует состояние телефонного...

Servise, BroadcastReceiver, Activity - Программирование Android
Здравствуйте, есть сервис и активити, сервис возвращает данные активити через BroadcastReceiver... все работает отлично, но когда виходиш...

Виджеты, BroadcastReceiver и Строки - Программирование Android
Здравствуйте. Занимаюсь созданием виджета. Делаю что то наподобие нажатия на кнопку. Использую Broadcast. Предполагается ,что после нажатия...

Чтение preferences в BroadcastReceiver - Программирование Android
Доброго времени суток. Сам смысл того что я делаю: есть активити, которая отображает состояние батареи, есть активити настроек и есть...

BroadcastReceiver, куда добавить код? - Программирование Android
помогите понять часть статьи https://habrahabr.ru/post/234425/. добрался до Для работы BroadcastReceiver'а надо добавить немного кода в...

Как заставить работать BroadcastReceiver? - Программирование Android
Добрый день! Собственно идея: есть стандартный плеер телефона(HTC One m7 Android 4.4.3) и проводная гарнитура с одной кнопкой. Но по...

Запуск BroadcastReceiver без активити - Программирование Android
Имеется приложение, включающее в себя единственный класс: public class MyReceiver extends BroadcastReceiver{ @Override ...

Как поучить/передать данные в/из BroadcastReceiver ? - Программирование Android
Например, есть BroadcastReceiver и есть Сервис. BroadcastReceiver получает различные ресиверы от системы (типа...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
quadenes
2 / 2 / 1
Регистрация: 14.07.2015
Сообщений: 50
09.08.2016, 14:26     BroadcastReceiver, считывание состояние телефона #2
alex_81, я могу ошибаться, но считывание состояния производится с помощью Telephonymanager, а в onReceive он не используется
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
09.08.2016, 14:33     BroadcastReceiver, считывание состояние телефона #3
код рабочий, и метод onRecieve срабатывает
прилетают action с названием android.intent.action.PHONE_STATE
alex_81
0 / 0 / 0
Регистрация: 09.08.2016
Сообщений: 2
10.08.2016, 13:28  [ТС]     BroadcastReceiver, считывание состояние телефона #4
Тогда, согласно коду:
Java
1
2
3
if (phone_state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                //телефон звонит, получаем входящий номер
                id = 10;
НО я в моей активити записываю в строку переменную id, через getId(). И после входящего звонка или исходящего звонка записывается только на единицу больше. Получается значения 10 или 20 не присваиваются.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
10.08.2016, 13:46     BroadcastReceiver, считывание состояние телефона #5
Цитата Сообщение от alex_81 Посмотреть сообщение
Получается значения 10 или 20 не присваиваются.
получается что ты знал что метод отрабатывает нормально, но для чего-то решил дезинформировать людей, которые пытались тебе помочь

Добавлено через 12 минут
если пошевелить мозгами то можно было бы в onRecieve первой строкой вписать вывод в лог и посмотреть какие именно строки прилетают по событию
getAction() будет возвращать android.intent.action.PHONE_STATE
а intent.getStringExtra(TelephonyManager.EXTRA_STATE); будет возвращать RINGING или IDLE
Yandex
Объявления
10.08.2016, 13:46     BroadcastReceiver, считывание состояние телефона
Ответ Создать тему
Опции темы

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