zoukankan      html  css  js  c++  java
  • 在android上监听网络状态的变更

        开发过程中经常会遇到一种需求,在你的Activity中需要获得网络连接的状态,以便确认下一步的流程,之前设计过一个复杂的方法,后来发现每次网络状态发生变化了都会发广播出来,广播这是个好东西,有了广播,我们就可以灵活的去处理了。

        当然,首先要加权限 

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

    这样,我们写receiver就可以了。

    <receiver
        
    android:name="NetworkReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>

    </receiver> 

    code里面写

    public class NetworkReceiver extends BroadcastReceiver {

        protected Context    mContext;

        @Override
        public void onReceive(Context context, Intent intent) {
            mContext = context;
            // 第一种
            ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
            NetworkInfo mobileNetInfo = connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            showToast("Active Network Type", activeNetInfo);
            showToast("Mobile Network Type", mobileNetInfo);
            // 第二种
            NetworkInfo networkInfo = intent
                    .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            String extraInfo = intent
                    .getStringExtra(ConnectivityManager.EXTRA_EXTRA_INFO);
            boolean isFailOver = intent.getBooleanExtra(
                    ConnectivityManager.EXTRA_IS_FAILOVER, false);
            boolean noConnectivity = intent.getBooleanExtra(
                    ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            NetworkInfo otherNetworkInfo = intent
                    .getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
            //
            showToast("networkInfo", networkInfo);
            showToast("extraInfo", extraInfo);
            showToast("isFailOver", isFailOver);
            showToast("noConnectivity", noConnectivity);
            showToast("otherNetworkInfo", otherNetworkInfo);
            showToast("reason", reason);
        }

        public void showToast(String info, Object object) {
            if (object == null) {
                return;
            }
            Toast.makeText(mContext, info + " : " + object.toString(), 0).show();
        }

  • 相关阅读:
    玩转持续化集成之Jenkins
    常用的免费移动应用测试框架推荐
    没有学过功夫能否练神功
    Android APP性能测试(下)
    Android APP性能测试(上)
    python-mongodb简单封装
    python使用协程完成批量模拟支付
    python多进程完成模拟支付
    python多线程完成模拟支付请求
    python-自动登录禅道
  • 原文地址:https://www.cnblogs.com/mudoot/p/2352767.html
Copyright © 2011-2022 走看看