android——判断网络状态

平常我们玩qq的时候我们没联网 ,qq上面回显示“网络连接不给力,请检查网络连接”那么它是 通过什么方式判断网络是否连接的呢?
下面将写个案例展示如何检查网络连接状态的
由于我们这里只是测试下所以我们的项目只是简单的实现点击一个按钮判断设备网络是否连接如果 网络已连接则弹出一个消息框提示“网络通畅”反之则提示“您的网络真的连接 了吗”

1.新建一个android项目textNet(设备版本为4.4.2)
2.打开activity_main.xml 添加一个按钮
3.打开MainActivity.java 用匿名内部类为按钮添加一个点击事件
注:不建议使用匿名内部类 如果事件过多会很乱,做好到同一包下建一个类去实现方便修改

项目代码如下:

package com.example.internet;

import android.app.Activity;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.os.Bundle;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {
    private ConnectivityManager con;
    private boolean wifi;
    private boolean internet;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获得句柄
        Button btn1 = (Button) this.findViewById(R.id.button1);

        //匿名内部类实现点击事件
        btn1.setOnClickListener(new OnClickListener(){

            public void onClick(View v) { //建议不使用匿名内部类,
                //这里加try catch是为了防止设备没给权限二停止运行影响用户体验,
                try {
                    //监视网络连接状态
                    con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);
                    //getNetworkinfo  获取指定网络连接类型的信息
                    wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
                    internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

                } catch (Exception e) {
                    e.printStackTrace();
                }

                PackageManager pm = getPackageManager();
                //判断是否有权限
                boolean permission = (PackageManager.PERMISSION_GRANTED ==
                        pm.checkPermission("android.permission.ACCESS_NETWORK_STATE", "com.example.internet"));  

                if (permission) {  

                    if(wifi | internet){
                        //土司    弹框显示
                        Toast.makeText(MainActivity.this,
                                "网络通畅", Toast.LENGTH_LONG)
                                .show();
                    }else{
                        Toast.makeText(MainActivity.this,
                                "亲,网络连了么?", Toast.LENGTH_LONG)
                                .show();
                    } 

                }else {
                    //如果没权限则提示
                    Toast.makeText(MainActivity.this,
                            "请打开相关网络状态权限,方便使用", Toast.LENGTH_LONG)
                            .show();
                }
            }

        });
    }

 

注:权限清单方法

  

try {
            PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);</span>
            String[] permissionStrings = pack.requestedPermissions;
            showToast("权限清单--->" + permissionStrings.toString());
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }  

这里转载一份权限表:

  1. http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html

  

时间: 2024-10-10 02:22:21

android——判断网络状态的相关文章

Android判断网络状态方法详解

Android 判断网络状态这一应用技巧在实际应中是比较重要的.那么,在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析. 1.public class ConnectionChangeReceiverextends BroadcastReceiver 2.{ [email protected] 4.public void onReceive( Context context,Intent intent ) 5.{ 6.Conn

Android - 判断网络状态

Android手机同时支持WIFI和3G, 判断网络连接, 判断网络类型(WIFI或3G). 权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 判断网络连接 /** * 判断网络是否可用, 在使用网络请求是预先使用此方法进行检查, 以节省资源. * * @return 可用状态 */ public static boolean isNetAvailable() { C

Android判断网络状态

别人写好的分享一下 public static class NetWork { public static final String NETWORK_TYPE_WIFI = "wifi"; public static final String NETWORK_TYPE_3G = "eg"; public static final String NETWORK_TYPE_2G = "2g"; public static final String N

Android 监控网络状态

Html代码 public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { Log.i("NetWorkState", "Unavailabe

android 判断网络连接、sim卡信息以及ping操作是否网络连接正常

  //判断是否为wifi连接     public boolean isWifiConnected(Context context) {         if (context != null) {             ConnectivityManager mConnectivityManager = (ConnectivityManager) context                     .getSystemService(Context.CONNECTIVITY_SERVI

Android检查网络状态步骤

android 如何检查网络连接状态,是android开发中一个常见的问题. 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限: <span style="font-size:24px;"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </span> 1)判断是否有网络连接 <span styl

Android获取网络状态

Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html Overview 在做Android app的时候,网络的状态可能会经常的变化,当用户当前没有网络的时候,我们要保证程序不崩溃,而在当用户使用流量的话,则需要确保,在进行耗流量的操

Android 判断网络链接

今天在做判断是否有网络连接时一直报错,后来才知道缺少了权限. 大家都知道Android连网需要添加权限: <uses-permission android:name="android.permission.INTERNET" /> 但是我们在判断时也需要添加访问权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permis

Android判断网络连接状态

需要相关权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/