Andriod开发 网络状态改变监听(这样说可能不太合理)
2016-05-26 13:33
453 查看
博主是个新手,也是第一次写,百度了很多相关资料,实现了APP中网络状态改变的监听。
话不多说,翠花(大名:HIM)上代码啊。
首先,写下需要用到的权限。
再来看布局中的代码。
其实布局可以不写的,但是为了在页面上显示出网络的状态,博主还是写了(啰嗦 -_-|)。。。
然后来看MainActivity中的代码。
内容简陋,大神勿喷(双手合十)。
话不多说,翠花(大名:HIM)上代码啊。
首先,写下需要用到的权限。
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
再来看布局中的代码。
其实布局可以不写的,但是为了在页面上显示出网络的状态,博主还是写了(啰嗦 -_-|)。。。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="50dp" android:text="监听中···" android:textSize="25sp" android:gravity="center" android:background="#C7EDCC" /> </RelativeLayout>
然后来看MainActivity中的代码。
package com.him.NetStateListener_BroadcastReceiver; public class MainActivity extends Activity { private TextView tv; private BroadcastReceiver connectionReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 tv = (TextView) findViewById(R.id.tv); //实例化广播 connectionReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { getNetWorkState();//调用获取网络状态的方法 } }; // 注册Receiver IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionReceiver, intentFilter); } private void getNetWorkState() { if(this != null){ ConnectivityManager mConnectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); //先判断有没有网络 if(mNetworkInfo != null){//有网络 Log.i("net", "有网络连接....."); int netType = mNetworkInfo.getType();//获取网络类型 int netSubtype = mNetworkInfo.getSubtype(); if(netType == mConnectivityManager.TYPE_WIFI){//WIFI Log.i("net", "WIFI....");//type = 1 tv.setText("有网络连接····WIFI"); } if (netType == ConnectivityManager.TYPE_MOBILE ) {//MOBILE Log.i("TAG","移动数据连接.....");//type = 0 tv.setText("有网络连接····GPRS"); } if(mNetworkInfo.isAvailable()){//判断网络是否可用 Log.i("TAG",""+mNetworkInfo.getType()); } }else{//无网络 Log.i("net", "无网络连接....."); tv.setText("无网络连接····"); } } } @Override protected void onDestroy() { super.onDestroy(); // 注销广播 if (connectionReceiver != null) { unregisterReceiver(connectionReceiver); } } }
内容简陋,大神勿喷(双手合十)。
相关文章推荐
- TCP沾包解包(2)
- Linux下使用iptables禁止指定IP地址的网络连接
- http长连接
- erlang http post and get 请求
- CSS---网络编程
- CSS---网络编程
- HTTP长连接实现“服务器推”的技术快速入门及演示示例
- 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?
- 斯坦福CS231n课程: 视觉识别中的卷积神经网络 Convolutional Neural Networks for Visual Recognition
- URLConnection的连接、超时、关闭用法总结
- 网络流量监控工具----iftop
- objective-c - 基础篇 - 数据库网络 -- 使用NSURLSession进行POST请求的网络数据
- http://www.blogjava.net/xylz/archive/2010/07/08/325587.html
- android api23 抛弃了httpClient,许多基于httpClient第三方库怎么办?
- https 出现host name not match 问题
- BP神经网络
- C/C++ 网络库介绍
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- HttpClient 传输xml字符串
- Ajax 对象创建 兼容各个浏览器 通用方法getHTTPObject.js