Как получить LocalBroadcast в сервисе Android - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь создать приложение, в котором у меня есть приемник, который отправляет широковещательную рассылку:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...