在android中运行应用程序时检查网络状态

时间:2012-03-28 12:59:09

标签: android connectivity

我正在使用一些网址来播放视频。在这里,当我启动应用程序时,我检查了网络状态,或者当我进入onResume状态时,我检查了网络状态。但是,当流媒体正在播放时,如果任何原因导致网络工作失败..我如何检查网络的状态。  在这里,我使用此代码检查状态..

public static boolean isOnline(Context context) {
    boolean state = false;
    ConnectivityManager cm = (ConnectivityManager)
    context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiNetwork =
        cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiNetwork != null) {
                state=wifiNetwork.isConnectedOrConnecting();
             }

        NetworkInfo mobileNetwork =
        cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobileNetwork != null) {
            state=mobileNetwork.isConnectedOrConnecting();
        }

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (activeNetwork != null) {
            state=activeNetwork.isConnectedOrConnecting();
        }

        return state;
  } 

来自oncreate和orResume方法,我正在调用这个方法..但是如何在运行应用程序时找到网络的状态。

提前致谢...

1 个答案:

答案 0 :(得分:3)

您可以在BroadcastReceiver内注册一个Activity,它将接收连接更改广播。因此,在onReceive()方法中,当您的连接发生变化时会触发,您必须采取措施:

    BroadcastReceiver mNetworkReceiver=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //take actions
        }
    };
    registerReceiver(mNetworkReceiver,
        new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));

您还需要向清单添加以下权限:

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