在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设备开发网络是否连接的代码,感觉你的观看。

 

转载于:https://www.cnblogs.com/HB135WBH/p/6087563.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用,可以通过 ConnectivityManager 类来获取当前网络连接的状态,进而判断当前连接网络是否可以上网。具体实现方法如下: ```java ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 判断当前网络是否可以上网 if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { // 当前连接的是 WiFi 网络 // 判断是否可以上网,可以使用 ping 命令测试网络连通性 // 可以使用 Runtime.getRuntime().exec() 方法执行 ping 命令 } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { // 当前连接的是移动网络(流量) // 判断是否可以上网,同样可以使用 ping 命令测试网络连通性 // 可以使用 Runtime.getRuntime().exec() 方法执行 ping 命令 } } else { // 当前连接网络 } ``` 在上述代码,先通过 ConnectivityManager 获取当前网络连接的状态,如果 networkInfo 不为 null 并且 isConnected() 方法返回 true,则说明当前连接网络,可以继续判断网络类型。对于 WiFi 和移动网络,可以使用 ping 命令测试网络连通性,从而判断当前连接网络是否可以上网。如果当前连接网络,则无法判断当前连接网络是否可以上网。 需要注意的是,使用 ping 命令测试网络连通性可能会受到防火墙等因素的影响,因此测试结果并不一定准确。如果需要更加准确地判断当前连接网络是否可以上网,可以考虑通过访问特定的网址来测试网络连通性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值