Android 网络状态检测

package com.example.administrator.yunstore.net;

import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

import com.example.administrator.yunstore.R;

/**
 * Created by Administrator on 2016/10/20.
 */

public class CheckNetException{

    private ConnectivityManager connectivityManager;
    private Context context;
    public CheckNetException(Context context){
        this.context=context;
    }

    /**
     * @return 网络是否连接
     */
    public boolean checkNetConn() {

        //得到网络链接管理器
        connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //获取网络链接信息
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        //判断网络是否链接
        if (activeNetworkInfo != null) {
            if (activeNetworkInfo.isConnected()) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }

    /**
     * 设置wifi
     */
    public void setNetWork(){
        AlertDialog.Builder alert=new AlertDialog.Builder(context);
        alert.setIcon(R.drawable.set);
        alert.setTitle("网络提示信息");
        alert.setMessage("网络不可用,如果继续,请先设置网络!");
        alert.setPositiveButton("设置网络", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                Intent intent = null;
                /**
                 * 判断手机系统的版本!如果API大于10 就是3.0+
                 * 因为3.0以上的版本的设置和3.0以下的设置不一样,调用的方法不同
                 */
                if (android.os.Build.VERSION.SDK_INT > 10) {
                    intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
                } else {
                    intent = new Intent();
                    ComponentName component = new ComponentName(
                            "com.android.settings",
                            "com.android.settings.WirelessSettings");
                    intent.setComponent(component);
                    intent.setAction("android.intent.action.VIEW");
                }
                context.startActivity(intent);
        }
        });
        alert.setNegativeButton("暂不设置", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        alert.create();
        alert.show();
    }

    /**
     * 判断网络为GPRS还是WIFI
     * 返回1:GPRS;
     * 返回2:WiFi;
     * 返回3:error;
     */
    public int judgeNew(){
        NetworkInfo.State gprs = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
        NetworkInfo.State wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
        if(gprs == NetworkInfo.State.CONNECTED || gprs == NetworkInfo.State.CONNECTING){
           // Toast.makeText(context, "This is gprs", Toast.LENGTH_SHORT).show();
            return 1;
        }
        if(wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING){
            //Toast.makeText(context, "This is wifi", Toast.LENGTH_SHORT).show();
            return 2;
        }
        return 3;
    }

}
时间: 2024-10-28 20:15:02

Android 网络状态检测的相关文章

如何消除原生Android网络状态上的惊叹号

喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志. 这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测. 其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Android的NetworkMonitor模块会构造一个http的请求,发送到指定的服务器,然后利用收到的响应进行网络状态判断. 网络状态有如下几种状态: 1) 根本就没有返回,这种情况代表当前没有

Android网络状态判断 wifi mobile

/** * 网络状态 wifi mobile * * @author jiangbing * */ public class NetworkUtils { /** * 判断当前是否 网络连接 (是否有效的连接)不分wifi mobile */ public static boolean isConnectdeAvailable(Context context) { try { ConnectivityManager manager = (ConnectivityManager) context

判断Android网络状态信息-wifi,3g/4g 和定位方式-gps,network,passive

我们项目的工具类中,这些方法应该是常驻方法,因为他们太常用了,一方面将这些方法总结在这篇文章中,以便于自己日后使用,另一方面也给大家提供个方便,省的每次到处去找了. 1.判断当前是否已经连网 不管连接的是WIFI还是移动网络,最终都会返回true,否则返回false public static boolean isNetworkAvailable(Context context){ if (context!=null) { //获取系统服务 ConnectivityManager cm = (C

Android网络状态获取和WebView的加载完成,加载失败监听

在我们的项目中,经常需要对WebView中加载的内容是否完成或者是否加载失败进行判别,这两天写的一个小应用就涉及到了这一点. WebView的实质就是loadUrl,所以前提是设备接入网络,那么这个如何判断呢?看代码吧: // 网络状态 public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (Connectivit

[android网络有效性检测] NetworkMonitor代码造成内存泄漏

造成内存泄漏的log如下: E StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. E StrictMode: java.lang.Throwable: Explicit termination method 'end' not called …… E Str

Android 网络状态操作

/** * 声明连接管理器对象 */ private ConnectivityManager connectivityManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.通过系统服务得到连接管理器对象 this.connectivityManage

android 网络连接检测

首先, 需要在AndroidManifest.xml 中添加下列权限: <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 判断是否连接的方法类: package com.akm.detectinternetconnectio

Android 通过广播获取网络状态

Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验. 本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请对比WIFI连接作出调整. 首先写一个WifiStateBroadcast类继承BroadcastReceiver,重写onRecevie方法,获取网络连接状态管理器,通过管理器拿到对应的网络信息,得到网络状态,判断网络状态,作出相应的业务逻辑. 1 public class WifiStateBroadCast e

Android使用BroadcastReceiver监听网络状态

在开发中,经常会遇到需要判断手机网络状态从而进行各种操作的功能,在这里简单介绍下这种功能的实现. 如题,通过BroadcastReceiver我们能在网络状态改变的时候监听到它. 那么,注册广播的两种方式: 1.静态注册:在AndroidManifest.xml中用标签声明注册,并在标签内用标签设置过滤器. 1 2 3 4 5 6 7 <!--继承BroadcastReceiver,重写onReceiver方法--> <receiver android:name="MyRece