Android网络监听和网络判断的示例分析
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇文章给大家分享的是有关Android网络监听和网络判断的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、在AndroidM
千家信息网最后更新 2025年11月11日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安全错误
数据库的锁怎样保障安全
腾讯云服务器初级工程师认证
无锡手机备件管理软件开发
四川服务器阵列卡云空间
数据库配置不生效
信息网络安全检查啥意思
临安行业专业软件开发
会议数据库cnki
数据库基本语句示例
十字猫软件开发者平台
有哪些具体软件开发失败
线上网络安全宣传模式
一次性付费永久服务器
深圳科技互联网之城
服务器的角色管理器在哪打开
自学网络技术视频
雷石点歌服务器
海南网络安全等级保护要求
服务器端口在哪里开的
互联网科技缩写
好看的网络安全书籍
java 日志服务器
乱斗西游服务器有哪些
数据库可视化tableau
万方数据库期刊检索
天宏小助礼互联网科技招聘
跟网络安全有关的股票
逊克软件开发项目管理
数据库字段几兆
浙江c语言软件开发哪家可靠
软件开发企业税负率是多少