精华内容
下载资源
问答
  • 安卓检测网络状态
    2021-06-03 05:36:04

    用户手机当前网络可用:WIFI、2G/3G网络,用户打开与不打开网络,和是否可以用是两码事。可以使用指的是:用户打开网络了并且可以连上互联网进行上网。 检测当前网络是否可用,代码如下:

    /**

    * 检测当的网络(WLAN、3G/2G)状态

    * @param context Context

    * @return true 表示网络可用

    */

    public static boolean isNetworkAvailable(Context context) {

    ConnectivityManager connectivity = (ConnectivityManager) context

    .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity != null) {

    NetworkInfo info = connectivity.getActiveNetworkInfo();

    if (info != null && info.isConnected())

    {

    // 当前网络是连接的

    if (info.getState() == NetworkInfo.State.CONNECTED)

    {

    // 当前所连接的网络可用

    return true;

    }

    }

    }

    return false;

    }

    在AndroidManifest.xml文件添加的权限:

    更多相关内容
  • Android检测网络状态&监听网络变化

    千次阅读 2021-12-14 11:00:27
    网络状态改变、用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现 广播接收者,简单地把网络的变化通过接口抛出去 package com.qkt.face.et.receiver; import android.content.BroadcastReceiver; ...

    网络状态改变、用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现

    广播接收者,简单地把网络的变化通过接口抛出去

    package com.qkt.face.et.receiver;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ConnectivityManager;
    import android.util.Log;
    
    import com.qkt.face.et.MyApplication;
    import com.qkt.face.et.enums.NetworkType;
    import com.qkt.face.et.utils.NetworkUtil;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class NetStateChangeReceiver extends BroadcastReceiver {
    
        private static class InstanceHolder {
            private static final NetStateChangeReceiver INSTANCE = new NetStateChangeReceiver();
        }
    
        private List<NetStateChangeObserver> mObservers = new ArrayList<>();
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
            if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
                NetworkType networkType = NetworkUtil.getNetworkType(context);
                Log.i("NetStateChangeReceiver", networkType.toString());
                notifyObservers(networkType);
            }
        }
    
        public static void registerReceiver(Context context) {
            IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
            context.registerReceiver(InstanceHolder.INSTANCE, intentFilter);
        }
    
        public static void unRegisterReceiver(Context context) {
            context.unregisterReceiver(InstanceHolder.INSTANCE);
        }
    
        public static void registerObserver(NetStateChangeObserver observer) {
            if (observer == null) {
                return;
            }
            if (!InstanceHolder.INSTANCE.mObservers.contains(observer)) {
                InstanceHolder.INSTANCE.mObservers.add(observer);
            }
        }
    
        public static void unRegisterObserver(NetStateChangeObserver observer) {
            if (observer == null) {
                return;
            }
            if (InstanceHolder.INSTANCE.mObservers == null) {
                return;
            }
            InstanceHolder.INSTANCE.mObservers.remove(observer);
        }
    
        private void notifyObservers(NetworkType networkType) {
            if (networkType == NetworkType.NETWORK_NO) {
                for (NetStateChangeObserver observer : mObservers) {
                    observer.onNetDisconnected();
                }
            } else {
                for (NetStateChangeObserver observer : mObservers) {
                    observer.onNetConnected(networkType);
                }
            }
        }
    }
    
    public enum  NetworkType {
        NETWORK_WIFI("WiFi"),
        NETWORK_4G("4G"),
        NETWORK_2G("2G"),
        NETWORK_3G("3G"),
        NETWORK_UNKNOWN("Unknown"),
        NETWORK_NO("No network");
    
        private String desc;
        NetworkType(String desc) {
            this.desc = desc;
        }
    
        @Override
        public String toString() {
            return desc;
        }
    }

    在需要的地方监听网络状态变化(记得销毁时删除监听器),一般在BaseActivity

    public class BaseActivity extends AppCompatActivity implements NetStateChangeObserver {
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           NetStateChangeReceiver.registerObserver(this);
           registerReceiver();
        }
     
        @Override
        protected void onDestroy() {
            super.onDestroy();
            NetStateChangeReceiver.unRegisterObserver(this);
            unregisterReceiver();
        }
     
        @Override
        public void onNetDisconnected() {
            ivNet.setImageResource(R.drawable.netError);
        }
    
        //设置网络图标
        @Override
        public void onNetConnected(NetworkType networkType) {
            if (networkType.equals(NetworkType.NETWORK_WIFI) ) {
                getWifi();
            } else {
                ivNet.setImageResource(R.drawable.net_eth);
            }
        }
     
        //获取wifi信号强度
        private void getWifi() {
            //x心跳包请求成功,获取真实网速,请求失败,网络错误
            WifiManager wifi_service = (WifiManager) getContext().getApplicationContext().getSystemService(WIFI_SERVICE);
            WifiInfo wifiInfo = wifi_service.getConnectionInfo();
    
            int wStrength = Math.abs(wifiInfo.getRssi());
            if (wStrength < 50) {
                ivNet.setImageResource(R.drawable.net4);
            } else if (49 < wStrength && wStrength < 100) {
                ivNet.setImageResource(R.drawable.net3);
            } else if (100 < wStrength) {
                ivNet.setImageResource(R.drawable.net2);
            }
    
        }
     }

    public class NetworkUtil {
        private NetworkUtil() {
            throw new UnsupportedOperationException("u can't instantiate me...");
        }
    
        @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
        private static NetworkInfo getActiveNetworkInfo(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            return cm.getActiveNetworkInfo();
        }
    
        /**
         * 获取当前网络类型
         * 需添加权限 {@code <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>}
         */
        @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
        public static NetworkType getNetworkType(Context context) {
            NetworkType netType = NetworkType.NETWORK_NO;
            NetworkInfo info = getActiveNetworkInfo(context);
            if (info != null && info.isAvailable()) {
    
                if (info.getType() == ConnectivityManager.TYPE_WIFI) {
                    netType = NetworkType.NETWORK_WIFI;
                } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                    switch (info.getSubtype()) {
    
                        case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
                        case TelephonyManager.NETWORK_TYPE_EVDO_A:
                        case TelephonyManager.NETWORK_TYPE_UMTS:
                        case TelephonyManager.NETWORK_TYPE_EVDO_0:
                        case TelephonyManager.NETWORK_TYPE_HSDPA:
                        case TelephonyManager.NETWORK_TYPE_HSUPA:
                        case TelephonyManager.NETWORK_TYPE_HSPA:
                        case TelephonyManager.NETWORK_TYPE_EVDO_B:
                        case TelephonyManager.NETWORK_TYPE_EHRPD:
                        case TelephonyManager.NETWORK_TYPE_HSPAP:
                            netType = NetworkType.NETWORK_3G;
                            break;
    
                        case TelephonyManager.NETWORK_TYPE_LTE:
                        case TelephonyManager.NETWORK_TYPE_IWLAN:
                            netType = NetworkType.NETWORK_4G;
                            break;
    
                        case TelephonyManager.NETWORK_TYPE_GSM:
                        case TelephonyManager.NETWORK_TYPE_GPRS:
                        case TelephonyManager.NETWORK_TYPE_CDMA:
                        case TelephonyManager.NETWORK_TYPE_EDGE:
                        case TelephonyManager.NETWORK_TYPE_1xRTT:
                        case TelephonyManager.NETWORK_TYPE_IDEN:
                            netType = NetworkType.NETWORK_2G;
                            break;
                        default:
                            String subtypeName = info.getSubtypeName();
                            if (subtypeName.equalsIgnoreCase("TD-SCDMA")
                                    || subtypeName.equalsIgnoreCase("WCDMA")
                                    || subtypeName.equalsIgnoreCase("CDMA2000")) {
                                netType = NetworkType.NETWORK_3G;
                            } else {
                                netType = NetworkType.NETWORK_UNKNOWN;
                            }
                            break;
                    }
                } else {
                    netType = NetworkType.NETWORK_UNKNOWN;
                }
            }
            return netType;
        }
    }

     

    展开全文
  • 主要为大家详细介绍了Android检查网络状态工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Android检查手机网络状态及网络类型的方法,涉及Android检测手机网络状态的技巧,需要的朋友可以参考下
  • 用户手机当前网络可用:WIFI、2G/3G网络,...检测当前网络是否可用,代码如下:/*** 检测当的网络(WLAN、3G/2G)状态* @param context Context* @return true 表示网络可用*/public static boolean isNetworkAvaila...

    用户手机当前网络可用:WIFI、2G/3G网络,用户打开与不打开网络,和是否可以用是两码事。可以使用指的是:用户打开网络了并且可以连上互联网进行上网。

    检测当前网络是否可用,代码如下:

    /**

    * 检测当的网络(WLAN、3G/2G)状态

    * @param context Context

    * @return true 表示网络可用

    */

    public static boolean isNetworkAvailable(Context context) {

    ConnectivityManager connectivity = (ConnectivityManager) context

    .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity != null) {

    NetworkInfo info = connectivity.getActiveNetworkInfo();

    if (info != null && info.isConnected())

    {

    // 当前网络是连接的

    if (info.getState() == NetworkInfo.State.CONNECTED)

    {

    // 当前所连接的网络可用

    return true;

    }

    }

    }

    return false;

    }

    在AndroidManifest.xml文件添加的权限:

    展开全文
  • Android 判断网络状态及开启网路 在使用Android连接网络的时候,并不是每次都能连接到网络,在这个时候,我们最好是在程序启动的时候对网络的状态进行一下判断,如果没有网络则进行即时提醒用户进行设置。 要判断...
  • 主要代码:package ...import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetTools {private Context context=null;public NetTools(...

    主要代码:

    package com.jun.net.tools;

    import android.content.Context;

    import android.net.ConnectivityManager;

    import android.net.NetworkInfo;

    public class NetTools {

    private Context context=null;

    public NetTools(Context context) {

    super();

    this.context = context;

    }

    public boolean checkNetState(){

    ConnectivityManager mConnectivityManager = (ConnectivityManager) context

    .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();

    if (mNetworkInfo != null) {

    return mNetworkInfo.isAvailable();

    }

    return false;

    }

    public boolean checkWifiState(){

    ConnectivityManager mConnectivityManager = (ConnectivityManager) context

    .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo mWiFiNetworkInfo = mConnectivityManager

    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (mWiFiNetworkInfo != null) {

    return mWiFiNetworkInfo.isAvailable();

    }

    return false;

    }

    }

    主程序中使用代码:

    btn.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    NetTools tool=new NetTools(NetActivity.this);

    if(tool.checkNetState()||tool.checkWifiState()){

    Toast.makeText(NetActivity.this,"net OK!", Toast.LENGTH_LONG).show();

    }else{

    Toast.makeText(NetActivity.this,"not!", Toast.LENGTH_LONG).show();

    }

    }

    }); 如上既可以检测到3G网络或者是Wifi网络

    展开全文
  • Android网络状态判断

    2021-11-23 21:50:37
    uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 public boolean isNetworkConnected(Context context) { if (context != null) { ...
  • 主要介绍了Android检查网络连接状态的变化无网络时跳转到设置界面,需要的朋友可以参考下
  • Android开发中,许多功能需要网络连接,所以在开发过程中需要进行手机网络检测
  • Android获取网络状态

    2021-06-02 20:40:40
    前言:在开发安卓移动端时,几乎每一个app都需要连接网络,因此,对设备的网络状态检测是很有必要的!比如:检测当前网络是否可用,当前可用的网络是属于WIFI还是MOBILE等等。实现步骤流程:1 .获取...
  • 实时监测网络状态及当前网络类型,NetworkUtils工具类中提供了检测网络状态的方法
  • <uses android:name=”android.permission.ACCESS_NETWORK_STATE”> 1)判断是否有网络连接 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager ...
  • 在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。 ConnectivityManager有四个主要任务: 1、监听手机网络状态...
  • android 检测网络状态

    热门讨论 2012-05-29 11:19:18
    android 检测网络状态 android 检测网络状态
  • 在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。 ConnectivityManager有四个主要任务: 1、监听手机网络状态...
  • 安卓Android源码——网络连接状态检测.rar
  • Android检查网络状态步骤

    千次阅读 2016-06-15 17:51:42
    android 如何检查网络连接状态,是android开发中一个常见的问题。 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限: 1)判断是否有网络连接 public boolean isNetworkConnected(Context context) { ...
  • Android 获取网络状态

    2021-06-05 14:32:07
    1.检测网络是否可用public boolean isNetWorkConnected() {ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo ni = cm.getActiveNetworkInfo();return ni...
  • i if(networkInfo[i].getType() == ConnectivityManager.TYPE_ETHERNET){ //有线网络连接成功,更新UI } } } // 监听有线网络连接状态(插拔网线) private BroadcastReceiver mEthernetReceiver = new ...
  • android 实时检测网络状态

    千次阅读 2017-04-03 16:52:52
    xml添加权限: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />onCreate:注册帧听 ...
  • 网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络状态进行判断,如果没有网络则提醒用户进行设置
  • 安卓Android源码——网络连接状态检测.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,492
精华内容 28,596
热门标签
关键字:

安卓检测网络状态