您的位置:首页 > 理论基础 > 计算机网络

Andriod开发 网络状态改变监听(这样说可能不太合理)

2016-05-26 13:33 453 查看
博主是个新手,也是第一次写,百度了很多相关资料,实现了APP中网络状态改变的监听。







话不多说,翠花(大名: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);
}
}
}


内容简陋,大神勿喷(双手合十)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: