Захват входящего номера

216
24 июля 2017, 13:19

Есть ли возможность на Android 4.0.0+ "подписаться" на события входящего звонка и получить номер звонящего. После этого произвести какие-нибудь вычисления (например, сходить в БД), и вывести на экране сообщение (нотификацию)?

Answer 1

Вам нужно зарегистрировать BroadcastReceiver в AndroidMainifest.xml:

<receiver android:name=".PhoneStateReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

Запросить разрешение с помощью <uses-permission android:name="android.permission.READ_PHONE_STATE"/>. В случае с Android 6.0 (API level 23) необходимо будет запросить данный permission в runtime.

Код PhoneStateReeceiver.java должен выглядеть так:

 public class PhoneStateReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            try {
                String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
                String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
                if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
                    Toast.makeText(context,"Входящий звонок от " + incomingNumber, Toast.LENGTH_SHORT).show();
                }
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
   }
READ ALSO
Java - выдаёт ошибку ХЗ HELP!

Java - выдаёт ошибку ХЗ HELP!

В чём проблема?? Пожалуйста помогите разобраться

246
Java Jbutton смена иконки

Java Jbutton смена иконки

Не меняется иконка у кнопки, при нажатииВ чем может быть проблема?

218
Вопрос по поводу many to many в hibernate

Вопрос по поводу many to many в hibernate

ЗдравствуйтеУ меня есть 2 сущности

225