zoukankan      html  css  js  c++  java
  • 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

     

      

  • 相关阅读:
    HTML <input> 标签的 maxlength 属性
    HTTP 方法:GET 对比 POST
    怎么在html页面和js里判断是否是IE浏览器
    一行神奇的javascript代码
    c# 数据库批量插入数据SqlBulkCopy 示例
    c# 多线程调用窗体上的控件 示例
    sqlserver查找使用了某个字段的所有存储过程
    SQL Server 数据库性能优化
    SQL语句的执行过程
    Sql Server- 性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
  • 原文地址:https://www.cnblogs.com/mark0812/p/6087792.html
Copyright © 2011-2022 走看看