Я пытаюсь создать приложение, в котором у меня есть приемник, который отправляет широковещательную рассылку:
public class PhoneStateReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
try {
System.out.println("Receiver start");
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
Intent callIntent = new Intent("INCOMING_CALL");
callIntent.putExtra("number", incomingNumber);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
if ((state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))){
//Toast.makeText(context,"Call Received State",Toast.LENGTH_SHORT).show();
}
if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
//Toast.makeText(context,"Call Idle State",Toast.LENGTH_SHORT).show();
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
У меня также запущена служба, и я хочу захватить широковещательную рассылку в этой службе, у меня естьпробовал следующее, но это не работает:
public class NotifierService extends Service
{
...//something goes here
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
LocalBroadcastManager.getInstance(this).registerReceiver(lbReceiver, new IntentFilter("INCOMING_CALL"));
return START_STICKY;
}
private BroadcastReceiver lbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals("INCOMING_CALL"))
{
//do something
}
}
};
Может кто-нибудь сказать, пожалуйста, правильный способ получения трансляции в службе, если невозможно получить трансляцию, то что еще я могу использовать?
[ОБНОВЛЕНИЕ] Так мой сервис объявляется в манифесте
<service
android:name=".NotifierService"
android:enabled="true"
android:exported="true"
>
</service>