在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 ...
随机推荐
- NodeJs 创建 Web 服务器
以下是演示一个最基本的 HTTP 服务器架构(使用8081端口),创建 ser.js 文件,代码如下所示: var http = require('http'); var fs = require(' ...
- 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM
1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...
- [转]在 ASP.NET MVC 4 中创建为移动设备优化的视图
原文链接 https://msdn.microsoft.com/zh-cn/magazine/dn296507.aspx 如果深入探讨有关编写移动设备网站的常识性考虑因素,会发现其中有一种内在矛盾. ...
- Openstack Basic
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- BufferedReader 中的 readLine()
BufferedReader中的readLine()方法,API解释如下: Reads a line of text. A line is considered to be terminated by ...
- Spring urlMapping
背景 某url性能测试表明,qps单机最高只有4000多,虽然靠堆机器可以解决问题,但是显然不是什么优雅的方案. 试着把controller里的所有的逻辑都屏蔽,只是简单的返回hello world, ...
- JS函数
1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏 ...
- webpack 入门
webpack webpack,是一款模块加载器兼打包工具.能将 JS.coffee.less.sass.图片等作为模块来使用. 经过一个多月的摸索,姑且算是入门了.因此重新写个小DEMO来加深自己对 ...
- jsp调试小技巧
console.log($("#toolbar")); 打印对象可知道这个对象的参数信息
- c#程序中使用"like“查询access数据库查询为空的问题
今天,在开发的过程中发现了一个特别奇怪的问题:access中like查询时候,在Access数据库中执行,发现可以查询出结果,这是在数据库上执行,select * from KPProj where ...