iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android网络监听和网络判断示例介绍
  • 355
分享到

Android网络监听和网络判断示例介绍

2024-04-02 19:04:59 355人浏览 独家记忆
摘要

目录一、在AndroidMainfest.xml中添加权限二、NetUtilSS 网络判断工具类三、IntentReceiver网络监听工具类四、BaseActivity五、Main

一、在AndroidMainfest.xml中添加权限


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

二、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() {
        
        throw new UnsupportedOperationException("cannot be instantiated");
    }
 
    
    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;
    }
 
    
 
    public static boolean isGpsEnabled(Context context) {
        LocationManager lm = ((LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE));
        List<String> accessibleProviders = lm.getProviders(true);
        return accessibleProviders != null && accessibleProviders.size() > 0;
    }
 
    
 
    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;
    }
 
    
 
    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();
    }
 
    
    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网络监听和网络判断示例介绍的文章就介绍到这了,更多相关Android网络监听和网络判断内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android网络监听和网络判断示例介绍

本文链接: http://www.lsjlt.com/news/159507.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android网络监听和网络判断示例介绍
    目录一、在AndroidMainfest.xml中添加权限二、NetUtilSS 网络判断工具类三、IntentReceiver网络监听工具类四、BaseActivity五、Main...
    99+
    2024-04-02
  • Android网络监听和网络判断的示例分析
    本篇文章给大家分享的是有关Android网络监听和网络判断的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、在AndroidMainfest.xml中添加权限<...
    99+
    2023-06-21
  • 网络监听简介3
    然而,对***者呢?与管理员感兴趣的是对数据包进行分析不同,***者,感兴趣的是数据包的内容,尤其是账号,口令等敏感内容。我们模仿***者在主机上跑一个上面提到的sniffit软件,监听本机发出去的所有telnet数据,如下: server...
    99+
    2023-01-31
    简介 网络
  • Android 监听网络状态变化
    此篇存在的主要意义在于解决用户使用app中网络状态发生了变化,需要我们去动态监听网络连接状态(有网、无网)、网络类型 (包括wifi、移动网络 -> 3G、4G等等) 文章目录 门前授...
    99+
    2023-10-11
    android 网络
  • Android中如何监听网络状态
    这期内容当中小编将会给大家带来有关Android中如何监听网络状态,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一.加入网络权限获取网络信息需要在AndroidManifest.xml文件中加入相应的权限...
    99+
    2023-05-31
    android
  • Android 判断网络状态及开启网路
    Android 判断网络状态及开启网路在使用Android连接网络的时候,并不是每次都能连接到网络,在这个时候,我们最好是在程序启动的时候对网络的状态进行一下判断,如果没有网络则进行即时提醒用户进行设置。要判断网络状态,首先需要有相应的权限...
    99+
    2023-05-30
    android 判断网络 roi
  • Android 动态注册监听网络变化实例详解
    Android 动态注册监听网络变化实例详解新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下:public class MainActivity extends AppCompatActivity { ...
    99+
    2023-05-30
    android 动态注册 监听网络
  • android获取及监听手机网络状态
    目录一、获取当前手机联网方式是WiFi还是手机4G数据二、监听手机网络变化总结一、获取当前手机联网方式是WiFi还是手机4G数据 private boolean getNetwork...
    99+
    2024-04-02
  • Android 项目中如何监听网络状态
    这篇文章给大家介绍Android 项目中如何监听网络状态,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android 监听网络状态第一: 开启服务。第二:发送广播的形式。建议采用方法二。源代码如下:广播: Broa...
    99+
    2023-05-31
    android 如何监听 roi
  • Android 判断当前网络是否可用简单实例
    Android 判断当前网络是否可用简单实例用户手机当前网络可用:WIFI、2G/3G网络,用户打开与不打开网络,和是否可以用是两码事。可以使用指的是:用户打开网络了并且可以连上互联网进行上网。首页添加网络权限<uses-permis...
    99+
    2023-05-31
    android 判断网络 roi
  • Android Banner本地和网络轮播图使用介绍
    目录加载本地图片第一步:先在build.gradle中加入banner和glide的依赖第二步:xml布局第三步:MainActivity加载网络图片下载网络图片的时候要记得添加网络...
    99+
    2024-04-02
  • Windows下的3个网络诊断命令介绍
    搜集了几个网络诊断的命令,Windows下的。 首先windows下的这几个命令都可以使用“--help”参数来查看帮助信息。 路由信息命令-----route 查看本地路由表复制代码代码如下:R...
    99+
    2023-06-15
    Windows 网络诊断命令 网络 命令 诊断
  • Android应用中是如何判断网络状态的
    Android应用中是如何判断网络状态的?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实例代码package com.example.android; import ja...
    99+
    2023-05-31
    android roi
  • Android网络封装的示例分析
    这篇文章给大家分享的是有关Android网络封装的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言:模拟用户登录,从安卓发送请求到服务端校验,再从服务端返回给安卓校验结果在AndroidManifest...
    99+
    2023-06-22
  • Android编程监听网络连接状态改变的方法
    本文实例讲述了Android编程监听网络连接状态改变的方法。分享给大家供大家参考,具体如下:BroadcastReceiverpublic class MyReceiver extends BroadcastReceiver { @Ove...
    99+
    2023-05-31
    android 监听 网络连接
  • Android应用中怎么对网络连接状态进行监听
    这篇文章给大家介绍Android应用中怎么对网络连接状态进行监听,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。思路:网络变化时系统会发出广播。所以我们监听这个广播,利用接口回调通知activity做相应的操作就好了。。...
    99+
    2023-05-31
    android roi
  • android获取及监听手机网络状态的方法是什么
    这篇“android获取及监听手机网络状态的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“android获取及监听...
    99+
    2023-06-26
  • vue网络请求方案原生网络请求和js网络请求库的示例分析
    这篇文章主要介绍vue网络请求方案原生网络请求和js网络请求库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 原生网络请求1. XMLHttpRequest(w3c标准)  &nbs...
    99+
    2023-06-21
  • CSS和网络性能的示例分析
    这篇文章主要介绍了CSS和网络性能的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CSS 是页面渲染的关键因素之一,(当页面存在外链 CSS 时,)浏览器会等待全部的...
    99+
    2023-06-15
  • Vista系统如何诊断和修复自动判断网络的故障
    这篇文章给大家介绍Vista系统如何诊断和修复自动判断网络的故障,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如图所示:如果Windows Vista上网经常掉线可以使用Vista杀毒伴侣的“闪电杀毒”功能可以轻松清除...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作