0

У меня есть две службы. Мне нужно транслировать пользовательские намерения с данными из одной службы. и во второй службе мне нужно его получить. Я попытался следующие:Передача пользовательских намерений от одного сервиса до другого

В первой услуги:

public String ACTION_CHANGE_TIME_FORMAT = "com.example.agile.mywatchface.changetimeformat"; 

Intent timeFormatIntent = new Intent(); 
        timeFormatIntent.putExtra("format", 12); 
        timeFormatIntent.setAction(ACTION_CHANGE_TIME_FORMAT); 
        LocalBroadcastManager.getInstance(this).sendBroadcast(timeFormatIntent); 

В Second службы:

public String ACTION_CHANGE_TIME_FORMAT = "com.example.agile.mywatchface.changetimeformat"; 

    public class TimeFormatReceiver extends BroadcastReceiver{ 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d(MyPreferences.LOGCAT_TAG, "Time format Broadcast received: "); 
      format = intent.getExtras().getInt("format", 0); 
      updateTime(); 
     } 
    } 

и я зарегистрированные и незарегистрированные приемники должным образом во второй службы:

IntentFilter timeFormatIntentFilter = new IntentFilter(); 
    timeFormatIntentFilter.addAction(ACTION_CHANGE_TIME_FORMAT); 
    MyWatchfaceService.this.registerReceiver(timeFormatReceiver, timeFormatIntentFilter); 

Здесь что-то не так? Я не могу получить данные (format).

Редактировать: onRecieve() не звонит.

ответ

0

В Second службы:
Изменение format = intent.getExtras().getInt("format", 0); к format = intent.getIntExtra("format", 0);

intent.getExtras() возвращает Bundle, которые ставят на Intent.putExtras(Bundle bundle), но вы этого не делали.

+0

my onReceive() не звонит –

+0

Когда вы регистрируетесь/регистрируете редиректор? – chartsai

0

1_ Проверьте, вызван ли ваш метод onReceive(). Если нет, ваш ресивер все еще не зарегистрирован.

2_, если (1) в порядке, попробуйте int format = intent.getIntExtra("format", 0);

P/S: Я не знаю, где вы используете «формат» переменную, рассмотрим использовать его в качестве локальной переменной и передать его как параметр.

int format = intent.getIntExtra("format", 0); 
updateTime(format) 
+0

nope ... onReceive() не звонит –

+0

Проверьте следующие условия: 1) Ваш приемник объявлен в файле манифеста? 2) Вызывается код registerReceiver(), я имею в виду, что вы запускаете вторую службу и регистрируете свой BroadcastReceiver. – NamNH

+0

Я зарегистрировался программно. Нужно ли мне явно регистрироваться в приемнике? –