Android 监測网络状态
     我们在使用Android手机时候,一些APP须要网络环境才干执行,所以手机须要可用的网络,无论是2G、3G或者WIFI。甚至有一些比較耗流量的APP仅仅能在WIFI的环境下执行,或者提供用户自行选择是否仅仅能在WIFI环境下执行,作为用户貌似后者体验更好。那么作为开发人员,我们仅仅须要几步就能给用户这样的体验。
-----------------------------------------------------------------------------------------------------------------------------
1.权限加入:APP须要联网。以及须要訪问网络状态,所以在AndroidManifest.xml中加入权限。
    <uses-permission android:name= "android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.状态获取:手机网络有数据(2G/3G/4G)连接、WIFI连接两种状态,能够区分获取和笼统的获取。

	/**
* 检查WIFI是否连接
*
* @author Ysjian
* @date 2014-5-9
* @return 假设连接了返回true,否则返回false
*/
public boolean isWifiConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return wifiInfo != null;
}
/**
* 检查手机网络(4G/3G/2G)是否连接
*
* @author Ysjian
* @date 2014-5-9
* @return 假设连接了返回true,否则返回false
*/
public boolean isMobileNetworkConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileNetworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return mobileNetworkInfo != null;
}
/**
* 检查是否有可用网络
*
* @author Ysjian
* @date 2014-5-9
* @return 存在WIFI和手机数据随意可用网络返回true。否则返回false
*/
public boolean hasActivityNetwork() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo() != null;
}
3.跳转设置:假设没有网络,跳转到网络设置界面。能够依据详细需求调用上面的三个方法之中的一个来推断网络状态。
if (!hasActivityNetwork()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this );
builder. setTitle( "没有可用的网络" )
.setMessage( "是否对网络进行设置?" )
.setPositiveButton( "是" ,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
Intent intent = null ;
intent = newIntent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
}
})
.setNegativeButton( "否" ,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}

文章来源:http://blog.csdn.net/ysjian_pingcx/article/details/25461053


最新文章

  1. elasticsearch-hadoop使用示例
  2. ubuntu16.04部署RED5流媒体服务器
  3. 学习ios【1】Objective-C 基本语法
  4. BackTrack5-r3安装VMware Tools
  5. NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)
  6. Tomcat的startup.bat一闪而过问题的解决
  7. Java学生管理系统项目案例
  8. delphi中的Label控件背景透明
  9. 转载:CEO应向软件工程师学习的7个技能
  10. 百度预测 及 maven pom搜索地址
  11. redis之lua脚本
  12. IVM import vector machine
  13. 从PHP程序员到RAW开发~
  14. Java中动态代理技术生成的类与原始类的区别 (转)
  15. Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)
  16. JAVA面向对象-----main方法详解
  17. 【CF526G】Spiders Evil Plan(贪心)
  18. linux 下创建共享文件夹
  19. kubernetes之configmap,深度解析mountPath,subPath,key,path的关系和作用
  20. 2019-03-20-day015-序列化存储

热门文章

  1. Ionic Angular自动捕获错误 配置Angular2.x +
  2. AC日记——斐波那契数列 洛谷 P1962
  3. Codeforces 832 B. Petya and Exam-字符串匹配
  4. (2).net web api 请求方式与参数
  5. (4)PHP基本语法、变量、数据类型、运算符、流程控制
  6. Apache优化建议
  7. kong流程学习
  8. 基于Bootstrap的表格插件bootstrap-table
  9. layout layout_alignLeft跟layout_toLeftOf
  10. Android-onInterceptTouchEvent()和onTouchEvent()