日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2023/12/10 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?獲取已連接的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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。