监听手机WiFi、GPRS等网络连接状态

来源:互联网 发布:汽车振动检测软件 编辑:程序博客网 时间:2024/05/17 04:48
我想对Android手机进行wifi、gprs等网络连接状态进行访问,这里用到的知识点:
BroadcastReciever:BroadcastReciever是安卓中四大组件之一。为了方便与进行系统级别的消息通知,Android引入了一套类似的广播消息机制。当一个地方发送广播的时候,只要收听这个广播的广播接收器都可以接收到这个广播。
    第一步:
定义一个继承于BroadcastReciever基类的接受器,重写onRecieve()方法;
    第二步:
注册BroadcastReciever
    第三部:
发送广播

具体看代码~:

自定义广播接收器
public class MyBroadcastReciever extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        //判断是否连接的标志        boolean success = false;
        //获取网络连接管理器        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //获取WiFi网络连接状态        NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
        //判断是否正在使用WiFi网络        if(state == NetworkInfo.State.CONNECTED){            success = true;            Toast.makeText(context, "Wifi已连接~", Toast.LENGTH_SHORT).show();        }
        //获取GPRS网络连接状态        state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
        //判断是否正在使用GPRS网络        if(state == NetworkInfo.State.CONNECTED){            success = true;            Toast.makeText(context, "GPRS已连接~", Toast.LENGTH_SHORT).show();        }        if(!success){            Toast.makeText(context, "无网络连接!", Toast.LENGTH_SHORT).show();        }    }}
MainActivity代码:
public class MainActivity extends AppCompatActivity {    private MyBroadcastReciever mBroadcastReciever;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);
        //创建意图过滤器对象        IntentFilter intentFilter = new IntentFilter();
        //给创建的意图过滤器对象指定action动作,来指明将来的广播接受者接受广播的类型        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        //创建广播接收器        mBroadcastReciever = new MyBroadcastReciever();
        //动态注册        registerReceiver(mBroadcastReciever,intentFilter);
        //创建意图对象,并指明action,那么意图过滤器与这个action匹配的广播接收器会收到这个广播        Intent intent = new Intent();        //intent.setAction("com.ontime.abc");
        //发送广播        sendBroadcast(intent);    }    @Override    protected void onDestroy() {        super.onDestroy();
        //activity销毁的时候,取消广播接受器的注册        unregisterReceiver(mBroadcastReciever);    }}
注意:
Android 开发中经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化
1:意图过滤器的action:
<action"android.net.conn.CONNECTIVITY_CHANGE"/>
2: 权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
好了,现在就可以监听网络状态的变化啦~
如下即是效果图:
原创粉丝点击