当前位置: 首页 > news >正文

Android笔记之网络状态推断

1、首先当然得在 manifest 中加入检查网络状态的权限;
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>

2、详细推断步骤
(1)首先要先获得Android 对连接管理的一个类对象。
     ConnectivityManager manager = (ConnectivityManager)getSystemService(
Context.CONNECTIVITY_SERVICE);
(2)获得网络链接状态
if (manager.getActiveNetworkInfo() != null) {
   networkFlag = manager.getActiveNetworkInfo().isAvailable();
  }

(3)假设没有连接,弹出对话框提示用户连接,并在“设置”button里让用户跳转到设置网络界面。
if (! networkFlag) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
             builder.setIcon(android.R.drawable.ic_dialog_alert);
             builder.setTitle("网络状态");
             builder.setMessage("当前网络不可用。是否设置网络?");
             builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
                 
                 @Override
                 public void onClick(DialogInterface dialog, int which) {
                     // TODO Auto-generated method stub
                  Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS");
                     startActivity(wifiSettingsIntent);
                 }
             });
             builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                 
                 @Override
                 public void onClick(DialogInterface dialog, int which) {
                     dialog.cancel();
                 }
             });
             builder.create();
             builder.show();
  }

(4)最后一步,也是比較关键一步,就是在manifest 里声明该Activity 。 假设没做,则会出现“xxx 已经停止执行”,原因显而易见。
问题是,我们曾经都是自己建立的Activity ,知道怎样声明。这里是系统自己的setting , 我们怎样声明呢?

        <PreferenceScreen
            android:title="设置网络"
            android:summary=" ">
            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.android.settings"
                android:targetClass="com.android.settings.WirelessSettings" />
        </PreferenceScreen>  

在application 里面写上以上代码就可以。

 (困惑了好久,最终在一个前辈博客里找到了答案,在此感谢,http://blog.csdn.net/shenyuemei/article/details/8005241)


因为代码简单,所以就不上传DEMO 代码了。

相关文章:

  • mysql 5.6.25编译安装详细步骤
  • 手写 jQuery 框架
  • P1120 小木棍 [数据加强版]
  • Oracle 11gR2 List-Range分区实验
  • python操作excel
  • 一行命令搞定node.js升级
  • 仿射梯度
  • Snapchat发布不到2个月的故事搜索功能,又双叒被Instagram抄袭了
  • 中芯国际第三财季净利润1.136亿美元
  • Jmeter常用函数之__CSVRead使用
  • 苹果计划在英国建立新总部 位于巴特西发电站旧址
  • 保监会:大数据改变保险运作模式
  • 分布式光伏渐入理想状态?
  • 提高人民媒介素养,加强网络安全建设
  • 大力发展互联网经济积极推进智慧城市建设
  • 78. Subsets
  • crontab执行失败的多种原因
  • ES6语法详解(一)
  • HTTP--网络协议分层,http历史(二)
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nfs客户端进程变D,延伸linux的lock
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Vue 2.3、2.4 知识点小结
  • 动态魔术使用DBMS_SQL
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 区块链共识机制优缺点对比都是什么
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 智能合约Solidity教程-事件和日志(一)
  • 自制字幕遮挡器
  • kubernetes资源对象--ingress
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #### go map 底层结构 ####
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)uboot源码分析
  • (一)kafka实战——kafka源码编译启动
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)ORM
  • (转)Unity3DUnity3D在android下调试
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .describe() python_Python-Win32com-Excel
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 中viewstate的原理和使用
  • .NET/C# 的字符串暂存池
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • :O)修改linux硬件时间
  • ??如何把JavaScript脚本中的参数传到java代码段中