Android网络监听和网络判断的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关Android网络监听和网络判断的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、在AndroidM
千家信息网最后更新 2026年11月03日Android网络监听和网络判断的示例分析
本篇文章给大家分享的是有关Android网络监听和网络判断的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
一、在AndroidMainfest.xml中添加权限
二、NetUtilSS 网络判断工具类
import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.location.LocationManager;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.telephony.TelephonyManager;import android.util.Log;import java.util.List; public class NetUtilSS { // 没有连接 public static final int NETWORN_NONE = 0; // wifi连接 public static final int NETWORN_WIFI = 1; // 手机网络数据连接 public static final int NETWORN_2G = 2; public static final int NETWORN_3G = 3; public static final int NETWORN_4G = 4; public static final int NETWORN_MOBILE = 5; private NetUtilSS() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 判断网络是否连接 * * @param context * @return */ public static boolean isConnected(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); // 如果仅仅是用来判断网络连接 if (null != connectivity) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (null != info && info.isConnected()) { if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } /** * 判断GPS是否打开 * * @param context * @return */ public static boolean isGpsEnabled(Context context) { LocationManager lm = ((LocationManager) context .getSystemService(Context.LOCATION_SERVICE)); List accessibleProviders = lm.getProviders(true); return accessibleProviders != null && accessibleProviders.size() > 0; } /** * 判断是否是3G网络 * @param context * @return */ public static boolean is3rd(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkINfo = cm.getActiveNetworkInfo(); if (networkINfo != null && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) { return true; } return false; } /** * 判断是wifi还是3g网络,用户的体现性在这里了,wifi就可以建议下载或者在线播放。 * * @param context * @return */ public static boolean isWifi(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkINfo = cm.getActiveNetworkInfo(); if (networkINfo != null && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; } /** * 打开网络设置界面 */ public static void openSetting(final Activity activity) { Log.e("netutils", "我是网络1111"); final AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle("开启网络服务"); builder.setMessage("网络没有连接,请到设置进行网络设置!"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (android.os.Build.VERSION.SDK_INT > 10) { // 3.0以上打开设置界面,也可以直接用ACTION_WIRELESS_SETTINGS打开到wifi界面 activity.startActivity(new Intent( android.provider.Settings.ACTION_SETTINGS)); } else { activity.startActivity(new Intent( android.provider.Settings.ACTION_WIRELESS_SETTINGS)); } dialog.cancel(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); Log.e("netutils", "我是网络"); } }); builder.show(); } /** * 返回当前网络连接类型 * * @param context 上下文 * @return */ public static int getNetworkState(Context context) { ConnectivityManager connManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (null == connManager) return NETWORN_NONE; NetworkInfo activeNetInfo = connManager.getActiveNetworkInfo(); if (activeNetInfo == null || !activeNetInfo.isAvailable()) { return NETWORN_NONE; } // Wifi NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (null != wifiInfo) { NetworkInfo.State state = wifiInfo.getState(); if (null != state) if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) { return NETWORN_WIFI; } } // 网络 NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (null != networkInfo) { NetworkInfo.State state = networkInfo.getState(); String strSubTypeName = networkInfo.getSubtypeName(); if (null != state) if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) { switch (activeNetInfo.getSubtype()) { case TelephonyManager.NETWORK_TYPE_GPRS: // 联通2g case TelephonyManager.NETWORK_TYPE_CDMA: // 电信2g case TelephonyManager.NETWORK_TYPE_EDGE: // 移动2g case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: return NETWORN_2G; case TelephonyManager.NETWORK_TYPE_EVDO_A: // 电信3g 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: return NETWORN_3G; case TelephonyManager.NETWORK_TYPE_LTE: return NETWORN_4G; default://有机型返回16,17 //中国移动 联通 电信 三种3G制式 if (strSubTypeName.equalsIgnoreCase("TD-SCDMA") || strSubTypeName.equalsIgnoreCase("WCDMA") || strSubTypeName.equalsIgnoreCase("CDMA2000")) { return NETWORN_3G; } else { return NETWORN_MOBILE; } } } } return NETWORN_NONE; }} 三、IntentReceiver网络监听工具类
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo; public class IntentReceiver extends BroadcastReceiver { private boolean isnet ; @Override public void onReceive(Context context, Intent intent) { ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo(); if (isnet == true){ if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()){ ToastUtils.getInstance(context).show("网络连接成功",1000); SpUtils.putString(context,"network","有网"); isnet = false; }else{ ToastUtils.getInstance(context).show("网络开小差了",1000); SpUtils.putString(context,"network","无网"); isnet = true; } }else{ isnet = true; } isnet = true; }}四、BaseActivity
import androidx.appcompat.app.AppCompatActivity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.IntentFilter;import android.net.ConnectivityManager;import android.os.Bundle;import android.widget.Toast; public class BaseActivity extends AppCompatActivity { private BroadcastReceiver receiver = new IntentReceiver(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); this.registerReceiver(receiver,filter); boolean connected = NetUtilSS.isConnected(this); if (connected) { boolean wifi = NetUtilSS.isWifi(this); boolean rd = NetUtilSS.is3rd(this); if (wifi) { Toast.makeText(this, "WIFI已经连接", Toast.LENGTH_SHORT).show(); SpUtils.putString(this,"network","有网"); } else if (rd) { Toast.makeText(this, "手机流量已经连接", Toast.LENGTH_SHORT).show(); SpUtils.putString(this,"network","有网"); } else { Toast.makeText(this, "网络连接不可用,请检查网络设置", Toast.LENGTH_SHORT).show(); SpUtils.putString(this,"network","无网");// NetUtilSS.openSetting((Activity) mContext); } } else { Toast.makeText(this, "网络连接不可用,请检查网络设置", Toast.LENGTH_SHORT).show(); SpUtils.putString(this,"network","无网");// NetUtilSS.openSetting((Activity) mContext); } } public static boolean isNetwork(Context context){ String network = SpUtils.getString(context, "network"); if (network.equals("有网")){ return true; } return false; } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); } }五、MainActivity
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.TextView; public class MainActivity extends BaseActivity { String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (isNetwork(this)){ Log.e(TAG,"有网"); //请求 //.... }else { Log.e(TAG,"无网"); //提示 //.... } }}以上就是Android网络监听和网络判断的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
网络
监听
电信
界面
示例
分析
工具
手机
更多
知识
篇文章
检查
移动
实用
成功
上下
上下文
中国移动
制式
在线播放
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
百单网互联网科技有限公司
湖南永感互联网科技有限公司
蓝思科技飞鸽互联网
圆梦互联网科技
科技企业和互联网企业
科技制造互联网公司
善班互联网科技
互联网科技的英文
浩特互联网科技
美国互联网黑科技
四个字互联网科技公司取名
岳阳华臻互联网科技有限公司
长沙茂晟互联网科技有限公司
烟台灵鸽互联网科技有限公司
怎样加入科技互联网
青岛易易互联网科技
现代互联网科技公司
恒生互联网科技趋势
颐高云石互联网科技
互联网电商科技
互联网科技与金融科技
智网互联网科技
朗涯互联网科技
深圳市运趣互联网科技有限公司
开一家科技互联网公司需要多少钱
互联网保险科技创业
互联网界的黑科技
北京瑞云互联网科技有限公司
宁波允成互联网科技有限公司