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

来源:互联网 发布:java就业指导 编辑:程序博客网 时间:2024/06/06 19:04

博主是个新手,也是第一次写,百度了很多相关资料,实现了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);          }    }}

内容简陋,大神勿喷(双手合十)。

0 0