zoukankan      html  css  js  c++  java
  • 在Android开发中如何判读当前设备是否连接网络

    1:前言:

       我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了,

    如果是有网络的话,那么此时就去向远程服务器去拿数据,如果是没有网络的话,给用户一个小小的温馨提示,同时为了用户的体验感友好,没有网络的

    时候可以向本地的SQLite的数据库区拿数据。(等到有网的时候,SQLite数据库的数据需要马上的更新)。

    现在我们开始进行演示如何判断当前设备是否连接网络。

    2:New 一个安卓Android项目

       默认的Activity里面的代码如下。[我们进行弄一个按钮来进行触发事件,同时来一个文本文字来进行显示当前网络的数据信息]

     1 package com.example.androidtestwangluo;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 import android.widget.Button;
     6 
     7 
     8 public class MainActivity extends Activity {
     9 
    10     private Button myBtn ;
    11     @Override
    12     protected void onCreate(Bundle savedInstanceState) {
    13         super.onCreate(savedInstanceState);
    14         setContentView(R.layout.activity_main);
    15         
    16          //进行的绑定按钮的控件
    17         myBtn = (Button)findViewById(R.id.MyButton) ;
    18         
    19           //绑定单击的事件的监听,需事件类的实例。(我们在外部进行的定义一个)
    20         myBtn.setOnClickListener(new MyOnClickLiner(this));
    21         
    22         
    23     }
    24 }

     此时的Activity对应设置的-----------"布局"-----代码xml效果图如下

           

    接下来我们进看一下那个单击事件   new MyOnClickLiner(this)  后的那个事件的实现类的代码  就是这个类   MyOnClickLiner

        

    package com.example.androidtestwangluo;
    
    import android.app.Activity;
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MyOnClickLiner implements OnClickListener {
    
        private Context conText;
        private TextView thisText;
        
        
        //定义一个连接监管对象
        private ConnectivityManager cm;
        
        public MyOnClickLiner(Context conText){
            this.conText = conText;
        } 
        
        
        @Override
        public void onClick(View v) {
             //进行的把上下文对象强制转换为Activity对象。
             Activity c =(Activity)conText ;
             
             int color = 0 ;
             String textContext= null;
         
             try {
                  //进行的绑定文本视图
                  thisText =(TextView)c.findViewById(R.id.textView1);
                  
                  cm =  (ConnectivityManager)c.getSystemService(c.CONNECTIVITY_SERVICE) ;
                
                  NetworkInfo woin = cm.getActiveNetworkInfo() ;
                    
                if(woin!=null){
                    //有网络的状态表进行设置有网络的状态
                    textContext = c.getResources().getString(R.string.network_ok) ;
                    color = c.getResources().getColor(R.color.green);
                 }else{
                 
                //有网络的状态表进行设置有网络的状态
                 textContext = c.getResources().getString(R.string.network_no) ;
                 color = c.getResources().getColor(R.color.red); 
             
              }
            
              
         } catch (Exception e){
            
            Toast.makeText(c, "你没有这个权限",Toast.LENGTH_LONG).show() ;
             
         }
                
        //给这个控件进行的设置文本    
        thisText.setText(textContext) ;
    //给这个控件进行的设置背景颜色 thisText.setBackgroundColor(color) ; } }

    核心判读是否有网络的代码是

      cm =(ConnectivityManager)c.getSystemService(c.CONNECTIVITY_SERVICE     
      NetworkInfo woin = cm.getActiveNetworkInfo() ;
    
    woin ==null
    //表示没有网络,否则是有连接网络

    最后特别注意:

      我们进获取手机的连接网络的状态的时候,需要有个权限的设置的,此时我们要进行添加一个权限,

       否则app一运行,会出现程序已停止现象,自动的退出程序。

       (须知上面的获取手机网络状态的代码,我进行了try....catch....,进行了捕获,进一步来温馨的提示。)

    哪里添加呢,添加什么的权限呢,好,我们接下来看一下。

    在项目的 bin目录--res--下的AndroidManifest.xml

             

          双击打开--再次点Permissions这个界面类型,add 一个权限 

         


       选择 Users Permission    Name :下拉为: 找到   android.permission.ACCESS_NETWORK_STATE
                (这个权限就是能够的获取网络连接的类型的权限)

         

     3:进行运行测试效果了。

                 有网络的时候

                  

                 手机网络断开的时候:

                 

                当权限忘记设置的时候,我上面的写的程序进行了处理的。

                      

                      我进行了try...catch.....进行了异常的处理,温馨友好的进行了提示(作为我们开发人员,程序可能情况,我们都要进行try..catch 进行处理的,才是完成的程序

    否则,给用户安装用了,来个异常,那么此软件就是强行退出,给用户的体验感很不好)

     -------------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------------

    以上就是我进行判断Android设备开发网络是否连接的代码,感觉你的观看。

  • 相关阅读:
    vim插件:显示树形目录插件NERDTree安装 和 使用【转】
    CMake 入门实战【转】
    在 linux 下使用 CMake 构建应用程序【转】
    Buildroot构建指南——根文件系统(Rootfs)【转】
    Buildroot构建指南--快速上手与实用技巧【转】
    Vim升华之树形目录插件NERDTree安装图解【转】
    【转】Android端与Android端利用WIFI进行FTP通信
    【转】Android 服务器之SFTP服务器上传下载功能 -- 不错
    【转】session setup failed: NT_STATUS_LOGON_FAILURE -- 不错
    【转】Mac OS X开机启动Path had bad permissions错误解决方案
  • 原文地址:https://www.cnblogs.com/HB135WBH/p/6087563.html
Copyright © 2011-2022 走看看