我不明白为什么 onReceive 方法从未被调用。我已经遵循了网上的所有示例,并且浏览了该网站上的许多类似问题。有任何想法吗?我错过了什么吗?
public class MainActivity extends Activity {
public BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Receiver", "Receiving message");
String action = intent.getAction();
String message;
if (action.equals(BUTTON_ACTION)) {
message = intent.getStringExtra("BUTTON");
Log.d("R", message);
}
}
};
String BUTTON_ACTION = "button";
@Override
protected void onResume() {
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver,
new IntentFilter(BUTTON_ACTION));
}
@Override
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
}
此时,按下按钮时我会收到日志。但我的接收器中从未到达 onReceive 方法。
public void button1(View view) {
Log.d("sender", "Broadcasting message");
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(BUTTON_ACTION).addCategory("Button Press")
.putExtra("BUTTON", "Button 1 has been pressed.").addFlags(Intent.));
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);
}
}
最佳答案
看起来您正在发送带有类别集的广播 Intent ,但您的 BroadcastReceiver
未设置为处理类别。如果您从广播 Intent 中删除该类别(或将其添加到IntentFilter
),这可能会为您修复。
来自文档:
Note that unlike the action, an IntentFilter with no categories will only match an Intent that does not have any categories.
( http://developer.android.com/reference/android/content/IntentFilter.html )
关于android - BroadcastReceiver onReceive() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682990/