Android应用开发android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?
白羽 2019-03-04 来源 :网络 阅读 1698 评论 0

摘要:本文将带你了解Android应用开发android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?,希望本文对大家学Android有所帮助。



Android应用开发android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?



    android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?
   
    问题描述
   
    android 代码怎么实时监控连接当前wifi热点的设备的连接或断开事件?
   
    如题,手机A开了热点,手机B打开Wifi连接上了A。那么当B关闭Wifi按钮时,A怎么实时感知到。有没有实现的代码、方法。
   
    解决方案
   
    // 当网络变化的时候系统会发出一个广播 Broadcast,只要在程序中注册一个广播接收器 BroadcastReceiver,并在   IntentFilter 中添加相应的过滤,这样一旦网络有变化,程序就能监听到
   
    public static final String CONNECTIVITY_CHANGE_ACTION =   android.net.conn.CONNECTIVITY_CHANGE;
   
    private void registerDateTransReceiver() {
   
    Log.i(Phone Link, register receiver    + CONNECTIVITY_CHANGE_ACTION);
   
    IntentFilter filter = new IntentFilter();
   
    filter.addAction(CONNECTIVITY_CHANGE_ACTION);
   
    filter.setPriority(1000);
   
    registerReceiver(new MyReceiver(), filter);
   
    }
   
    @Override
   
    public void onReceive(Context context, Intent intent) {
   
    String action = intent.getAction();
   
    Log.i(Phone Link, PfDataTransReceiver receive action  + action);
   
    if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){ //   网络变化的时候会发送通知
   
    Log.i(Phone Link, 网络变化了);
   
    return;
   
    }
   
    }
   
    // 当网络变化时,从有网到没网也会发广播,接收到广播的时候要判断当前网络是可用还是不可用状态
   
    public static NetworkInfo getActiveNetwork(Context context){
   
    if(context == null)
   
    return null;
   
    ConnectivityManager mConnMgr =   (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
   
    if(mConnMgr == null)
   
    return null;
   
    NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); //   获取活动网络连接信息
   
    return aActiveInfo;
   
    }
   
    解决方案二:
   
    Android监听网络变化
   
    注册方式:
   
    1.
   
    Xml代码 收藏代码
   
    android:name=包名.ConnectionChangeReceiver
   
    android:label=NetworkConnection >
   
    2.
   
    Java代码 收藏代码
   
    /*
   
    手动注册网络状态变化,或在清单文件配置。
   
    */
   
    private void registerNetStateReceiver() {
   
    Log.i(--bxm register netstate receiver...);
   
    mConnectivityReceiver = new ConnectionChangeReceiver();
   
    IntentFilter filter = new IntentFilter();
   
      filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
   
    registerReceiver(mConnectivityReceiver, filter);
   
    }
   
    其中 ConnectionChangeReceiver类为:
   
    Java代码 收藏代码
   
    public class ConnectionChangeReceiver extends BroadcastReceiver {
   
    private final static NetConnectionStateMgr dataStateMgr =   NetConnectionStateMgr.getInstance();
   
    @Override
   
    public void onReceive(Context context, Intent intent) {
   
    Log.i(--ConnectivityReceiver.onReceive()...);
   
    String action = intent.getAction();
   
    Log.i(--action= + action);
   
    ConnectivityManager connectivityManager = (ConnectivityManager)   context
   
    .getSystemService(Context.CONNECTIVITY_SERVICE);
   
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
   
    if (networkInfo != null) {
   
    Log.i(--Network Type =  +   networkInfo.getTypeName());
   
    Log.i(--Network State =  +   networkInfo.getState());
   
    if (networkInfo.isConnected()) {
   
    Log.i(--bxm Network connected);
   
    dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTIONED);
   
    }
   
    } else {
   
    Log.e(--bxm Network unavailable);
   
      dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTION_UNAVAILABLE);
   
    }
   
    dataStateMgr.notifyDataSetChanged();
   
    }
   
    }
   
    上面的NetConnectionStateMgr是自己实现的观察者类,方便用而已。
   
    注意权限配置:
   
    解决方案三:
   
    注意权限配置:
   
    解决方案四:
   
    注意权限配置:
   
    uses-permission android:name=android.permission.ACCESS_NETWORK_STATE
   
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程