广播接收器没有收到服务的意图
broadcast receiver not receiving intent from service
我搜索了 SO,甚至发现了一个与我的问题标题大致相同的问题。但我的代码仍然无法正常工作。
我尝试使用广播将我的 GPS 服务的位置发送到我的 MainActivity。
在我的 GPS 服务中我这样做
Intent intent = new Intent(MainActivity.EXTRA_NEW_POS_FOR_PLOTTING_INTENT);
intent.putExtra(MainActivity.EXTRA_NEW_POS_FOR_PLOTTING, new LatLng(location.getLatitude(), location.getLongitude()));
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
在 MainActivity.onCreate() 的接收方,我做的是:
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
LatLng pos = intent.getExtras().getParcelable(EXTRA_NEW_POS_FOR_PLOTTING);
newLocForPlotting(pos);
}
};
在 MainActivity.onStart() 中我有:
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, new IntentFilter(EXTRA_NEW_POS_FOR_PLOTTING_INTENT ));
我知道我的服务调用了 sendBroadcast(),但从未调用过我的 onReceive()。
出了什么问题?
将此代码放入您的 activity onResume 方法中。
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, new IntentFilter(EXTRA_NEW_POS_FOR_PLOTTING_INTENT ));
你也可以像这样使用本地广播
Intent intent = new Intent(BundleTags.BROADCAST_TAG_FOR_INCOMING_CALL_REQUEST);
// You can also include some extra data.
intent.putExtra(RESPONSE_MESSAGE, body);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
在activity
LocalBroadcastManager.getInstance(ServiceProviderActivity.this).registerReceiver(myReceiver,
new IntentFilter(BROADCAST_TAG_FOR_INCOMING_CALL_REQUEST));
我搜索了 SO,甚至发现了一个与我的问题标题大致相同的问题。但我的代码仍然无法正常工作。
我尝试使用广播将我的 GPS 服务的位置发送到我的 MainActivity。
在我的 GPS 服务中我这样做
Intent intent = new Intent(MainActivity.EXTRA_NEW_POS_FOR_PLOTTING_INTENT);
intent.putExtra(MainActivity.EXTRA_NEW_POS_FOR_PLOTTING, new LatLng(location.getLatitude(), location.getLongitude()));
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
在 MainActivity.onCreate() 的接收方,我做的是:
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
LatLng pos = intent.getExtras().getParcelable(EXTRA_NEW_POS_FOR_PLOTTING);
newLocForPlotting(pos);
}
};
在 MainActivity.onStart() 中我有:
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, new IntentFilter(EXTRA_NEW_POS_FOR_PLOTTING_INTENT ));
我知道我的服务调用了 sendBroadcast(),但从未调用过我的 onReceive()。
出了什么问题?
将此代码放入您的 activity onResume 方法中。
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, new IntentFilter(EXTRA_NEW_POS_FOR_PLOTTING_INTENT ));
你也可以像这样使用本地广播
Intent intent = new Intent(BundleTags.BROADCAST_TAG_FOR_INCOMING_CALL_REQUEST);
// You can also include some extra data.
intent.putExtra(RESPONSE_MESSAGE, body);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
在activity
LocalBroadcastManager.getInstance(ServiceProviderActivity.this).registerReceiver(myReceiver,
new IntentFilter(BROADCAST_TAG_FOR_INCOMING_CALL_REQUEST));