zoukankan      html  css  js  c++  java
  • android 通过广播监听网络连接状况

    首先添加以下权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    new一个广播NetStateChangeBroadcast

    package aviationboss.broadcast;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo.State;
    import android.util.Log;
    import android.widget.Toast;
    import aviationboss.data.SystemData;
    
    public class NetStateChangeBroadcast extends BroadcastReceiver {
        private ConnectivityManager connectivity;
        private boolean isConnect = false;
    
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            // TODO Auto-generated method stub
            connectivity = (ConnectivityManager) arg0
                    .getSystemService(arg0.CONNECTIVITY_SERVICE);
            State wifiState = connectivity.getNetworkInfo(
                    ConnectivityManager.TYPE_WIFI).getState();
            if (State.CONNECTED == wifiState) {
                isConnect = true;
            }
            
            if(connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)!=null){
                State mobileState = connectivity.getNetworkInfo(
                        ConnectivityManager.TYPE_MOBILE).getState();
                if (State.CONNECTED == mobileState) {
                    isConnect = true;
                }
            }
            
            Intent intent = new Intent();
            intent.setAction("netConnect");
    
            if (isConnect) {
                if (!SystemData.NetState) {
                    Toast.makeText(arg0, "网络已连接", Toast.LENGTH_SHORT).show();
                    SystemData.NetState = true;
                    intent.putExtra("netActions", "网络已连接");
                    arg0.sendBroadcast(intent);
                }
            } else {
                if (SystemData.NetState) {
                    Toast.makeText(arg0, "网络已断开", Toast.LENGTH_SHORT).show();
                    SystemData.NetState = false;
                    intent.putExtra("netActions", "网络已断开");
                    arg0.sendBroadcast(intent);
                }
            }
        }
    }

    判断wifi的连接状态

    connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState()

    判断移动网的连接状态

    connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()

    在配置文件中添加该广播,并设置监听的动作

    <receiver android:name="aviationboss.broadcast.NetStateChangeBroadcast" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
  • 相关阅读:
    ASP.NET上传文件的三种基本方法
    实例分析 equals 和 ==
    如何保证Web Service的安全
    Winform动态显示图片,数据流方式
    C# 文件保存到数据库中或者从数据库中读取文件
    简说Session
    NotifyIcon的简单使用
    c# Invoke和BeginInvoke 区别
    DataGridView 的 CurrentCellDirtyStateChanged事件用法
    十种发送邮件的方式
  • 原文地址:https://www.cnblogs.com/dcxz/p/3716089.html
Copyright © 2011-2022 走看看