Netowork广播接收器不适用于Android N

Netowork广播接收器不适用于Android N,android,broadcastreceiver,android-7.0-nougat,Android,Broadcastreceiver,Android 7.0 Nougat,我有一个用于连接更改的广播接收器,它适用于所有在android N下运行的设备,但不适用于android N。我找不到任何与此相关的东西,无论它们是否更改了N中的某些内容。有人知道为什么会这样吗 清单文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.admin.mov

我有一个用于连接更改的广播接收器,它适用于所有在android N下运行的设备,但不适用于android N。我找不到任何与此相关的东西,无论它们是否更改了N中的某些内容。有人知道为什么会这样吗

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.admin.movies">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
    android:name=".MovieSingleton"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver
        android:name=".NetworkBroadcastReceiver"
        android:exported="false"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
</application>

}

由于许多应用程序注册接收此广播,单个网络交换机可使它们全部唤醒并立即处理广播

在Android Nougat中,您必须使用Context.registerReceiver()注册您的BroadcastReceiver

此更改是Android 7.0后台优化和性能改进的一部分。

public class NetworkBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = NetworkBroadcastReceiver.class.getSimpleName();

public NetworkBroadcastReceiver() {

}

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "onReceive: network change");
    if(isOnline(context)){
        Log.d(TAG, "onReceive: connected");
    } else {
        Log.d(TAG, "onReceive: not connected");
    }
}


public boolean isOnline(Context mContext) {
    ConnectivityManager connMgr = (ConnectivityManager)
            mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return (networkInfo != null && networkInfo.isConnected());
}