在Android开发中如何判读当前设备是否连接网络
1:前言:
我们在Android开发的过程中,很多实现是要向远程服务器拿数据的,但是未必当前设备一定连接了网络啊,那么此时我们就是要进行判断的了,
如果是有网络的话,那么此时就去向远程服务器去拿数据,如果是没有网络的话,给用户一个小小的温馨提示,同时为了用户的体验感友好,没有网络的
时候可以向本地的SQLite的数据库区拿数据。(等到有网的时候,SQLite数据库的数据需要马上的更新)。
现在我们开始进行演示如何判断当前设备是否连接网络。
2:New 一个安卓Android项目
默认的Activity里面的代码如下。[我们进行弄一个按钮来进行触发事件,同时来一个文本文字来进行显示当前网络的数据信息]
package com.example.androidtestwangluo; import android.app.Activity;
import android.os.Bundle;
import android.widget.Button; public class MainActivity extends Activity { private Button myBtn ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //进行的绑定按钮的控件
myBtn = (Button)findViewById(R.id.MyButton) ; //绑定单击的事件的监听,需事件类的实例。(我们在外部进行的定义一个)
myBtn.setOnClickListener(new MyOnClickLiner(this)); }
}
此时的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设备开发网络是否连接的代码,感觉你的观看。
在Android开发中如何判读当前设备是否连接网络的更多相关文章
- Android开发中Handler的经典总结--转载至网络
一.Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释:当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件 ...
- 在android开发中使用multdex的方法-IT蓝豹为你整理
Android系统在安装应用时,往往需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问 ...
- Android开发中,那些让您觉得相见恨晚的方法、类或接口
Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...
- 如何在Android开发中让你的代码更有效率
最近看了Google IO 2012年的一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善And ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- 转: Android开发中的MVP架构详解(附加链接比较不错)
转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...
- android开发中的5种存储数据方式
数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...
- 【转】android开发中关于模拟器emulation的常见问题
[转]android开发中关于模拟器emulation的常见问题 Trouble: 无法启动android模拟器,提示 XDM authorization key matches an existin ...
- 设计模式笔记之二:Android开发中的MVP架构(转)
写在前面,本博客来源于公众号文章:http://mp.weixin.qq.com/s?__biz=MzA3MDMyMjkzNg==&mid=402435540&idx=1&sn ...
随机推荐
- mac boot2docker certs not valid with 1.7
摘自:https://github.com/boot2docker/boot2docker/issues/824 An error occurred trying to connect: Get ht ...
- 在VMware下正确克隆CentOS6.5的打开方式
引言 想必用VMware Workstation软件安装虚拟机,作为一个爱"折腾"的攻城狮肯定是千千万万遍的事情.无论是学习还是工作之中,我们都会遇到需要在一台物理主机上运行多台虚 ...
- JSON.parse
摘自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse The J ...
- 中文api接口
http://www.bejson.com/knownjson/webInterface/
- JAVA初学(1):值类型和引用类型的区别
JAVA值类型和引用类型的区别(转) [定义] 引用类型表示你操作的数据是同一个,也就 ...
- 定制自己的linux系统
算是总结式文档,以备后忘 先说一下背景,一开始我就知道有这个任务,同时我自己也非常感兴趣,打算去研究研究 于是才同意接这个任务,但是我的原意是从头开始搭建系统,也就是lfs 但接到任务后,由于种种原因 ...
- fastcgi 性能初配 504 gateway time-out
情况一:由于nginx默认的fastcgi进程响应缓冲区太小造成 这种情况下导致fastcgi进程被挂起,如果fastcgi服务队这个挂起处理不是很好的话,就可能提示"504 Gateway ...
- 常用JS效果 需要时更新。。。
1.手风琴效果 JS: $(function() { var aMenuOneLi = $(".menu-one > li"); var aMenuTwo = ...
- C# 导入EXCEL 报错外部表不是预期的格式错误 .
错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel “Externa ...
- IIS发布项目 遇到的error
HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 重新注册一下.net framework试试,当然这一步骤也可以排在第一位. 32位的Windows: ...