获取已连接的WiFi名称

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
//获取SSID
//完美解决9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称
private String getNetConfListForSSID() {String ssid = "";WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);if (mWifiManager != null) {WifiInfo info = mWifiManager.getConnectionInfo();//android10.0需要申请新添加的隐私权限ACCESS_FINE_LOCATION,如果还需要后台获取或者使用wifi api则还需要申请后台使用定位权限ACCESS_BACKGROUND_LOCATION//链接:https://www.jianshu.com/p/7c05a99f94daif(!IsNullString(info.getSSID())){ssid = info.getSSID();Log.e("lgq","---直接获取ssid:"+ssid);}else{int networkId = info.getNetworkId();@SuppressLint("MissingPermission")List<WifiConfiguration> netConfList = mWifiManager.getConfiguredNetworks();if(netConfList==null){return "";}for (WifiConfiguration wificonf:netConfList){if(wificonf.networkId == networkId){Log.e("lgq","---间接获取ssid:"+ssid);}}}}if (ssid!=null && ssid.startsWith("\"")) {ssid = ssid.substring(1);}if (ssid!=null && ssid.endsWith("\"")) {ssid = ssid.substring(0, ssid.length() - 1);}return ssid;
}//判断字符是否为空或者没数据
public static boolean IsNullString(String str) {if (str != null && !TextUtils.isEmpty(str) && !TextUtils.equals("", str.trim())) {return false;} else {return true;}
}

获取wifi的mac地址

public class D2WifiAdminSimple {private final Context mContext;public D2WifiAdminSimple(Context context) {mContext = context;}//获取SSID//完美解决9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称public String getWifiConnectedSsid() {String  ssid="";WifiManager mWifiManager=(WifiManager)mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);if(mWifiManager!=null){WifiInfo info=mWifiManager.getConnectionInfo();int networkId=info.getNetworkId();List<WifiConfiguration> netConfList=mWifiManager.getConfiguredNetworks();for (WifiConfiguration wificonf:netConfList){if(wificonf.networkId == networkId){ssid=wificonf.SSID;}}}if (ssid!=null && ssid.startsWith("\"")) {ssid = ssid.substring(1);}if (ssid!=null && ssid.endsWith("\"")) {ssid = ssid.substring(0, ssid.length() - 1);}return ssid;}public String getWifiConnectedBssid() {WifiInfo mWifiInfo = getConnectionInfo();String bssid = null;if (mWifiInfo != null && isWifiConnected()) {bssid = mWifiInfo.getBSSID();}return bssid;}// get the wifi info which is "connected" in wifi-settingprivate WifiInfo getConnectionInfo() {WifiManager mWifiManager = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = mWifiManager.getConnectionInfo();return wifiInfo;}private boolean isWifiConnected() {NetworkInfo mWiFiNetworkInfo = getWifiNetworkInfo();boolean isWifiConnected = false;if (mWiFiNetworkInfo != null) {isWifiConnected = mWiFiNetworkInfo.isConnected();}return isWifiConnected;}private NetworkInfo getWifiNetworkInfo() {ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);return mWiFiNetworkInfo;}
}
private D2WifiAdminSimple mWifiAdmin;
String strWifiBSSID = mWifiAdmin.getWifiConnectedBssid();

1、添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<!-- 网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2、创建监听广播NetWorkChangReceiver

public class NetWorkChangReceiver extends BroadcastReceiver {/*** 获取连接类型** @param type* @return*/private String getConnectionType(int type) {String connType = "";if (type == ConnectivityManager.TYPE_MOBILE) {connType = "3G网络数据";} else if (type == ConnectivityManager.TYPE_WIFI) {connType = "WIFI网络";}return connType;}@Overridepublic void onReceive(Context context, Intent intent) {if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// 监听wifi的打开与关闭,与wifi的连接无关int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);Log.e("lgqTAG", "wifiState:" + wifiState);switch (wifiState) {case WifiManager.WIFI_STATE_DISABLED:break;case WifiManager.WIFI_STATE_DISABLING:break;}}// 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {//获取联网状态的NetworkInfo对象NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);if (info != null) {//如果当前的网络连接成功并且网络连接可用if (NetworkInfo.State.CONNECTED == info.getState() && info.isAvailable()) {if (info.getType() == ConnectivityManager.TYPE_WIFI || info.getType() == ConnectivityManager.TYPE_MOBILE) {Log.i("lgqTAG", getConnectionType(info.getType()) + "连上");}} else {Log.i("lgqTAG", getConnectionType(info.getType()) + "断开");}}}}
}

3、配置广播

<!--监听网络状态-->
<receiver android:name=".NetWorkChangReceiver" ><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="android.net.wifi.WIFI_STATE_CHANGED" /><action android:name="android.net.wifi.STATE_CHANGE" /></intent-filter>
</receiver>

4、注册广播

private NetWorkChangReceiver netWorkChangReceiver;
netWorkChangReceiver = new NetWorkChangReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(netWorkChangReceiver, filter);

5、退出时

 unregisterReceiver(netWorkChangReceiver);

2、判断网络连接方式——wifi。2G,3G。4G。5G

public class Constants {/*** Unknown network class*/public static final int NETWORK_CLASS_UNKNOWN = 0;/*** wifi net work*/public static final int NETWORK_WIFI = 1;/*** "2G" networks*/public static final int NETWORK_CLASS_2_G = 2;/*** "3G" networks*/public static final int NETWORK_CLASS_3_G = 3;/*** "4G" networks*/public static final int NETWORK_CLASS_4_G = 4;}
public static int getNetWorkClass(Context context) {TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);switch (telephonyManager.getNetworkType()) {case TelephonyManager.NETWORK_TYPE_GPRS:case TelephonyManager.NETWORK_TYPE_EDGE:case TelephonyManager.NETWORK_TYPE_CDMA:case TelephonyManager.NETWORK_TYPE_1xRTT:case TelephonyManager.NETWORK_TYPE_IDEN:return Constants.NETWORK_CLASS_2_G;case TelephonyManager.NETWORK_TYPE_UMTS:case TelephonyManager.NETWORK_TYPE_EVDO_0:case TelephonyManager.NETWORK_TYPE_EVDO_A:case TelephonyManager.NETWORK_TYPE_HSDPA:case TelephonyManager.NETWORK_TYPE_HSUPA:case TelephonyManager.NETWORK_TYPE_HSPA:case TelephonyManager.NETWORK_TYPE_EVDO_B:case TelephonyManager.NETWORK_TYPE_EHRPD:case TelephonyManager.NETWORK_TYPE_HSPAP:return Constants.NETWORK_CLASS_3_G;case TelephonyManager.NETWORK_TYPE_LTE:return Constants.NETWORK_CLASS_4_G;default:return Constants.NETWORK_CLASS_UNKNOWN;}
}
public static int getNetWorkStatus(Context context) {//等于1时是wifi网络,等于4是4G网络,等于3是3G网络int netWorkType = Constants.NETWORK_CLASS_UNKNOWN;ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();if (networkInfo != null && networkInfo.isConnected()) {int type = networkInfo.getType();if (type == ConnectivityManager.TYPE_WIFI) {netWorkType = Constants.NETWORK_WIFI;} else if (type == ConnectivityManager.TYPE_MOBILE) {netWorkType = getNetWorkClass(context);}}return netWorkType;
}

3、判断网络是否连接

/*** 判断是否有网络连接* @param context* @return*/
public static boolean isNetworkConnected(Context context) {//true是链接,false是没链接if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;
}

9.0网络访问方法:application添加 android:usesCleartextTraffic="true" 即可

Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC相关推荐

  1. android监听卡1电话,Android 监听 SIM 卡状态

    判断是否包含 SIM 卡 /** * 判断是否包含SIM卡 * * @return 状态 */ public static boolean hasSimCard(Context context) { ...

  2. Android监听SMS发送状态并获取短信服务中心号码

    监听SMS发送状态的例子网上虽然有,但还是太杂了不完全.自己写了个. 短信服务中心号码的获取是通过SmsMessage.getServiceCenterAddress()方法获得.也就是只能从已经存储 ...

  3. android 软键盘 状态,Android监听软键盘状态

    监听软键盘隐藏或显示,代码如下: /** * 监听软键盘状态 */ private void listenerInput() { final LinearLayout ll_main = (Linea ...

  4. Android监听屏幕解锁和判断屏幕状态

     开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听 ...

  5. Android 监听来去电状态的实现

    本文授权发布公众号[刘桂林],星球[Hi Android] 在Android中我们想要实现监听电话状态一般都会通过TelephonyManager来监听,他提供了一个PhoneStateListene ...

  6. 双SIM卡,Android监听SIM卡状态

    最近在搞一个项目,其中有一块关于双SIM卡状态监听,在这一块上没有经验,在网上找了很多例子,但都是只是监听SIM卡改变状态,而我要的是不但要监听SIM状态改变,而且还要知道具体是哪张SIM卡状态改变, ...

  7. android 监听sim卡状态,android监控sim卡有没有服务示例(sim卡管理)

    public class UniteqService { public static final String LOG_TAG = "UniteqService"; public ...

  8. Android 监听软键盘按键的三种方式

    前言: 我们在Android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的"Go"按键加载url页面:在点击搜索框的时候,点 ...

  9. android 监听sim卡状态,android中判断sim卡状态和读取联系人资料的方法

    在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. imp ...

最新文章

  1. Hibernate 系列教程9-自关联
  2. 深度探索C++ 对象模型(6)-Data member的绑定
  3. Vue_VueResource
  4. 30是什么意思_“29+16”变“30+18”是什么意思?独立艺术院校有何优势?报考需要注意什么?...
  5. 让你的Mac读给你听,还能听写,用来练习英语口语!
  6. Go的内存管理(最新学习)
  7. answer的汉语_大概是几乎能满足你们所有要求的两所学校(汉语言文字学、语言学及应用语言学择校攻略)...
  8. airflow 部署
  9. 2.vue的diff算法(2020.12.07)
  10. 【Linux】CentOS 7 安装 docker
  11. DEVC编译器快捷键大全
  12. 增值税防伪税控系统到底是什么呢?
  13. matlab中norm函数的用法
  14. Magento国家代码缩写
  15. Win10家庭版没有权限访问网上邻居,不能连接共享打印机的解决办法
  16. 逻辑思维案例题(二)
  17. MySQL数据库基础--数据管理
  18. PHP服务器 支付宝 对接出现 【交易订单处理失败 请稍后再试 ALI38173】
  19. 杰理6905A更改蓝牙名字
  20. 上班了还能享受带薪长假,真爽啊 外企就是好啊!

热门文章

  1. 前端学习(1952)vue之电商管理系统电商系统之级联选择器
  2. 前端学习(1854)vue之电商管理系统电商系统之安装mysql
  3. 第九十六期:JavaScript 中的 4 个相等比较算法的介绍
  4. 第八十七期:爬了知乎“沙雕问题”,笑死个人!
  5. html:(29):伪选择符和分组选择符
  6. java学习(125):简单异常处理
  7. 玩转oracle 11g(16):命令学习4
  8. 页面性能优化参考建议
  9. 2020年周记(2/50)
  10. itchat 保存好友信息以及生成好友头像图片墙