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);

在第二服务中:

  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()没有打电话。

4

2 回答 2

0

在第二服务中:
更改format = intent.getExtras().getInt("format", 0);format = intent.getIntExtra("format", 0);

intent.getExtras()返回Bundlewhich put by Intent.putExtras(Bundle bundle),但您没有这样做。

于 2015-03-24T09:43:02.483 回答
0

1_ 检查您的 onReceive() 方法是否被调用。如果没有,您的 Receiver 仍未注册。

2_如果(1)没问题,试试int format = intent.getIntExtra("format", 0);

P/S:我不知道你在哪里使用“格式”变量,考虑将它用作局部变量并像参数一样传递它。

int format = intent.getIntExtra("format", 0);
updateTime(format)
于 2015-03-24T09:51:43.563 回答