实时监控网络状态

ConnectivityManager相关资料:https://blog.csdn.net/jason_wzn/article/details/71131544

首先需要在AndroidManifest.xml中声明网络相关的权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
public class MainActivity extends AppCompatActivity {

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkRequest.Builder builder = new NetworkRequest.Builder();
        NetworkRequest request = builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                .build();

        cm.requestNetwork(request, new ConnectivityManager.NetworkCallback() {

            @Override
            public void onAvailable(Network network) {
                Log.v("TAG", "onAvailable(): network +++++++++++++++++++" + network);
                // do something

                NetworkInfo.State state = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
//                if(NetworkInfo.State.CONNECTED==state){
//                    Log.i("通知", "GPRS网络已连接");
//                }

                state = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
                if(NetworkInfo.State.CONNECTED==state){
                    Log.i("通知", "WIFI网络已连接");
                }else {
                    Log.i("通知", "WIFI网络已断开");
                }
            }
        });
    }
//        // 跳转到无线网络设置界面
////        startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
//        // 跳转到无限wifi网络设置界面
////        startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));

猜你喜欢

转载自my.oschina.net/u/3698786/blog/1822025