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

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

Войти
Регистрация
Восстановить пароль
 
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 261
#1

Как запустить service при входящем вызове? - Android

19.05.2016, 05:22. Просмотров 52. Ответов 2
Метки нет (Все метки)

Есть ли такая возможность разбудить мой сервис при входящем вызове типа
Java
1
alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ 10000, pendingIntent);
только с помощью TelephonyManager?
Будить нужно из вне так как alarmManager, потому что приложение будет закрыто и слушатель не катит.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2016, 05:22     Как запустить service при входящем вызове?
Посмотрите здесь:

Android Что происходит при вызове метода popBackStack?
Android Как при старте приложения запустить другой Activity ?
LinearLayout при вызове клавиатуры остается на месте Android
Android Запуск приложения при входящем звонке
Android Как реализовать Синхронное выполнение двух функций при вызове AsyncTask
Возможно ли передавать информацию о входящем звонке? Android
Ошибка при вызове активити Android
Программа вылетает при вызове метода OnPrepareDialog Android
Android Как запретить смену ориентации при вызове DialogFragment?
Как запустить метод из Service? Android
Android Программа вылетает при вызове метода getResourse()
Null при вызове метода из другого класса Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
19.05.2016, 14:59     Как запустить service при входящем вызове? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
powowstal, BroadcastReceiver Вам нужен, настроенный на входящий звонок:

1. В manifest:

XML
1
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
XML
1
2
3
4
5
<receiver android:name=".IncomingCall">   
                <intent-filter>
                   <action android:name="android.intent.action.PHONE_STATE" />
                </intent-filter>
        </receiver>

2. Сам ресивер:

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
28
29
30
31
32
33
34
35
36
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
 
public class IncomingCall extends BroadcastReceiver {
 
    public void onReceive(Context context, Intent intent) {
 
        try {
            TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            MyPhoneStateListener listener = new MyPhoneStateListener(context);
            manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
        } catch (Exception e) {
            Log.e("Phone Error", e.getMessage(), e);
        }
 
    }
 
    private class MyPhoneStateListener extends PhoneStateListener {
 
        private Context context;
 
        public MyPhoneStateListener(Context context) {
            this.context = context;
        }
 
        public void onCallStateChanged(int state, String incomingNumber) {
            if (state == TelephonyManager.CALL_STATE_RINGING) {
                context.startService(new Intent(context, YourService.class));
            }
        }
    }
}
YourService.class замените на свой класс.
powowstal
27 / 27 / 4
Регистрация: 21.03.2013
Сообщений: 261
23.05.2016, 18:26  [ТС]     Как запустить service при входящем вызове? #3
YuraAAA, а есть ли способ оставить живым зарегистрированный ресивер после того как воспользовались программкой типа "клинер". Я протестировал код и выяснилось что после того как нажал очистку ресивер больше не срабатывает, а мне нужно что бы он оставался работать
Yandex
Объявления
23.05.2016, 18:26     Как запустить service при входящем вызове?
Ответ Создать тему
Опции темы

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