我有两项服务。我需要使用来自一个服务的数据来广播自定义意图。在第二次服务中,我需要接收它。我试过以下:
在第一次服务中:
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()
没有打电话。
答案 0 :(得分:0)
第二次服务:
将format = intent.getExtras().getInt("format", 0);
更改为format = intent.getIntExtra("format", 0);
intent.getExtras()
将返回Bundle
放置的Intent.putExtras(Bundle bundle)
,但您没有这样做。
答案 1 :(得分:0)
1_检查是否调用了onReceive()方法。如果没有,您的接收器仍然没有注册。
2_如果(1)没问题,请尝试int format = intent.getIntExtra("format", 0);
P / S:我不知道你在哪里使用“格式”变量,考虑将它用作局部变量并像参数一样传递它。
int format = intent.getIntExtra("format", 0);
updateTime(format)