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

本文介绍了如何在Android应用中使用BroadcastReceiver监听WiFi和GPRS的网络连接状态变化。通过创建BroadcastReceiver,注册并重写onReceive()方法,结合ConnectivityManager获取网络状态,实现了对网络连接的实时监控。在MainActivity中动态注册接收器,并设置意图过滤器,确保能捕获到网络连接变化的广播。别忘了添加必要的权限声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想对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"/>
好了,现在就可以监听网络状态的变化啦~
如下即是效果图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值