BroadcastReceiver没有显示来自onReceive的任何Log

时间:2014-04-25 11:51:18

标签: android android-intent broadcastreceiver android-service localbroadcastmanager

我的服务有功能

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

1 个答案:

答案 0 :(得分:2)

注册了广播接收器吗?

您可以通过编程方式执行此操作

IntentFilter filter = new IntentFilter("SOME_ACTION");
filter.addCategory("SOME_CATEGORY");
registerReceiver(YOUR_BROADCAST, filter);

或者在清单

<receiver android:name="YOUR_BROADCAST_CLASS" >
    <intent-filter>
        <action android:name="SOME_ACTION" />
        <action android:name="SOME_CATEGORY" />
    </intent-filter>
</receiver>