Есть ли возможность на Android 4.0.0+ "подписаться" на события входящего звонка и получить номер звонящего. После этого произвести какие-нибудь вычисления (например, сходить в БД), и вывести на экране сообщение (нотификацию)?
Вам нужно зарегистрировать 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();
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок