【发布时间】:2014-04-25 11:51:18
【问题描述】:
我的服务有功能
broadcaster = LocalBroadcastManager.getInstance(this);
public void sendResult(String message) {
Log.d("Service", "sendResult "+message);
Intent intent = new Intent();
intent.setAction("com.myandroid.app.messagechanged");
if(message != null)
intent.putExtra("message", message);
broadcaster.sendBroadcast(intent);
}
而MainActivity 有
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("MainActivity", "Receiving Broadcast");
Message = intent.getStringExtra("message");
Log.d("MainActivity", "Received : "+Message);
tvMessage.setText(Message);
}
};
而Manifest 有
<receiver android:name="com.myandroid.app.receiver" >
<intent-filter>
<action android:name="com.myandroid.app.messagechanged" />
</intent-filter>
</receiver>
此代码未更新TextView tvMessage。
日志:
Service sendResult MyMessage
仅显示有关这些功能的此日志。未显示来自onReceive 的任何日志。
我的包名是com.myandroid.app
服务名称是AppService
活动名称是MainActivity
【问题讨论】:
-
您混淆了“清单”注册的接收器类,以及动态声明和注册的接收器。 @Bruno 的回答显示了如何在代码中注册接收器。您可以在此处找到有关我对类似问题的回答的更多信息 - stackoverflow.com/a/23154946/383414
-
此解决方案可能对您有所帮助:stackoverflow.com/questions/32464151/…
标签: android android-intent broadcastreceiver android-service localbroadcastmanager