Android 来自NetworkChangeReceiver的广播无法通过

Android 来自NetworkChangeReceiver的广播无法通过,android,message-passing,localbroadcastmanager,Android,Message Passing,Localbroadcastmanager,我实现了一个networkchangerecever,如下所示: public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final ConnectivityManager connectionManager = (ConnectivityManager) con

我实现了一个
networkchangerecever
,如下所示:

public class NetworkChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        final ConnectivityManager connectionManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo wifi = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        logMessage(context, "Network State has changed.");
        if (!wifi.isAvailable()) {
            logMessage(context, "Golly gosh. WiFi has gone away.");
        }
    }


    private void logMessage(Context context, String message) {
        Intent intent = new Intent("logging-event");
        intent.putExtra("message", message);
        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
    }
}
在我的活动中,我还添加了一个广播接收器:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          String message = intent.getStringExtra("message");
          logMessages.add(message);
      }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_player);

    LocalBroadcastManager
            .getInstance(this)
            .registerReceiver(mMessageReceiver, new IntentFilter(("logging-event")));
}
AndroidManifest.xml

   <receiver android:name=".NetworkChangeReceiver"
        android:label="NetworkChangeReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>
    </receiver>


但由于未知原因,未调用活动上的onReceive方法。知道为什么会这样吗?可能是因为日志记录方法中使用了不同的上下文?如果我使用一个简单的toast,它就会通过,如果我在一个服务中使用相同的日志记录方法,我可以将该服务本身用作上下文。

您是否在AndroidManifest.xml中注册了该意图?这是我要检查的第一件事

如果没有,请验证您是否具有适当的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


尝试使用
活动的
registerReceiver()
方法,而不是使用
LocalBroadcastManager

不是100%确定,但是看一看,我注册了NetworkChange intent本身,这就是为什么它也会被接收并执行代码,但不是用于日志记录的。抱歉,我刚才看到了,所以我删除了评论。权限如何,您是否请求了相应的权限?请参阅我的编辑。