[最新]Android 熱點(diǎn)(HotSpot) 開(kāi)關(guān)檢測(cè)

問(wèn)題背景:

需求是實(shí)時(shí)檢測(cè)android手機(jī)的熱點(diǎn)是否打開(kāi),網(wǎng)上百度,谷歌都是:
1).主動(dòng)檢測(cè):通過(guò)反射去WifiManager類的getWifiApState方法或者isWifiApEnabled方法的值
2).被動(dòng)檢測(cè):動(dòng)態(tài)注冊(cè)監(jiān)聽(tīng)廣播android.net.wifi.WIFI_AP_STATE_CHANGED,然后判斷值是否為11(關(guān)閉)/13(打開(kāi))
此二方法可適配現(xiàn)在大部分新手機(jī),但是我遇到了一臺(tái)華為手機(jī)(為鴻蒙系統(tǒng))主動(dòng)檢測(cè)一直是false,且不觸發(fā)被動(dòng)廣播,大寫(xiě)的郁悶!!

問(wèn)題原因:

經(jīng)詳細(xì)查詢,這個(gè)問(wèn)題是一個(gè)技術(shù)變遷導(dǎo)致的問(wèn)題,手機(jī)wifi網(wǎng)卡同一時(shí)間只能處于一種狀態(tài)下(連接wifi上網(wǎng)/做為ap提供網(wǎng)絡(luò));
現(xiàn)在比較新的手機(jī)支持雙網(wǎng)卡,比如小米新款機(jī)型,就能實(shí)現(xiàn)wifi不斷地情況在開(kāi)ap;
而有些手機(jī)只有一張網(wǎng)卡,因此打開(kāi)熱點(diǎn)就只能關(guān)閉wifi,這個(gè)時(shí)候觸發(fā)的廣播其實(shí)是android.net.conn.TETHER_STATE_CHANGED,這個(gè)廣播里面會(huì)包含當(dāng)前支持ap的有那幾個(gè)接口availableArray,現(xiàn)在激活的是哪個(gè)接口tetherArray;其中接口大概有:p2p0, wlan0, p2p-p2p0-6, wlan1, ap0等;

我通過(guò)對(duì)比三臺(tái)手機(jī)監(jiān)聽(tīng)android.net.conn.TETHER_STATE_CHANGED這個(gè)廣播對(duì)比發(fā)現(xiàn)出問(wèn)題的華為手機(jī)打開(kāi)/關(guān)閉熱點(diǎn)tetherArray有變化,因此根據(jù)這個(gè)特點(diǎn)對(duì)原主動(dòng)檢測(cè)方法做了兼容處理,完美解決問(wèn)題,下面是日志記錄(其中華為nova 7為問(wèn)題機(jī)型,日志中的標(biāo)識(shí)在最下面的代碼里可查看):

華為暢享9(DUB-AL100,Emui系統(tǒng))
2022-08-31 14:34:58.533 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:34:58.535 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:34:58.537 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:55.764 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:55.771 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:55.822 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:55.830 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:56.113 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:56.118 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:56.153 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:56.157 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:56.176 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:56.326 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:56.334 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:36:57.107 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:36:57.142 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[wlan0]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:36:57.148 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:37:30.121 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:30.210 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:30.215 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:30.272 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:30.705 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:30.712 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:31.018 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:31.027 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:31.047 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:31.052 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.002 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:43.007 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.063 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:43.069 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.417 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:43.421 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.444 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:43.448 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.467 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:43.591 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:43.596 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:44.375 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:37:44.432 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[wlan0]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:44.435 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:37:50.461 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:50.521 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:50.525 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:50.609 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:51.006 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:51.011 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:51.341 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:51.345 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:37:51.379 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:37:51.382 1291-1291/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false

華為nova 7(JEF-AN00,harmony系統(tǒng))
2022-08-31 14:39:30.234 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0, p2p-p2p0-5]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:30.238 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:39:30.316 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[p2p-p2p0-5]====>error:[]===>isCompatCheckApOpen:true
2022-08-31 14:39:30.327 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:39:46.010 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:46.017 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:39:46.018 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:46.022 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:39:48.999 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0, p2p-p2p0-6]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:49.004 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:39:49.104 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[p2p-p2p0-6]====>error:[]===>isCompatCheckApOpen:true
2022-08-31 14:39:49.111 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:39:53.152 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:53.156 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:39:53.167 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[p2p0, wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:39:53.170 17044-17044/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false

小米Civi(miui系統(tǒng))
2022-08-31 14:59:28.038 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:28.039 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:28.041 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:36.294 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0, wlan1]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:36.302 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:36.331 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:36.459 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:59:36.519 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[wlan1]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:36.522 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:59:38.702 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:38.805 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:38.808 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:39.092 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:40.940 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0, wlan1]===active:[]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:40.951 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:40.967 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>false/false
2022-08-31 14:59:41.034 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true
2022-08-31 14:59:41.072 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:[wlan0]===active:[wlan1]====>error:[]===>isCompatCheckApOpen:false
2022-08-31 14:59:41.075 8569-8569/com.xxxxx.xxxx.xxxxx I/System.out: ======Stephen=======HotSpotStateReceiver==>true/true

解決代碼(isHotSpotApOpen()和isHotSpotApOpen2()二選一即可):

//注冊(cè)廣播
val intentFilter = IntentFilter()
intentFilter.addAction("android.net.wifi.WIFI_AP_STATE_CHANGED")
intentFilter.addAction("android.net.conn.TETHER_STATE_CHANGED")
hotSpotStateReceiver = HotSpotStateReceiver()
activity.registerReceiver(hotSpotStateReceiver, intentFilter)
//響應(yīng)廣播
class HotSpotStateReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val action = intent.action
        if (action == "android.net.wifi.WIFI_AP_STATE_CHANGED") {
            when(intent.getIntExtra("wifi_state", 0)){//便攜式熱點(diǎn)的狀態(tài)為:10---正在關(guān)閉;11---已關(guān)閉;12---正在開(kāi)啟;13---已開(kāi)啟
                10 -> EventBus.getDefault().post(MsgOperationEvent(MsgOperationEvent.MsgHotSpotChangeState, -1))//正在關(guān)閉
                11 -> EventBus.getDefault().post(MsgOperationEvent(MsgOperationEvent.MsgHotSpotChangeState, 0))//已關(guān)閉
                12 -> EventBus.getDefault().post(MsgOperationEvent(MsgOperationEvent.MsgHotSpotChangeState, -2))//正在開(kāi)啟
                13 -> EventBus.getDefault().post(MsgOperationEvent(MsgOperationEvent.MsgHotSpotChangeState, 1))//已開(kāi)啟
            }
        } else if (action == "android.net.conn.TETHER_STATE_CHANGED") {
            val available = intent.getStringArrayListExtra("availableArray")
            val active = intent.getStringArrayListExtra("tetherArray")
            val error = intent.getStringArrayListExtra("erroredArray")
            Utils.isCompatCheckApOpen = !active.isNullOrEmpty()
            Utils.debugPrintln("======Stephen=======HotSpotStateReceiver==TETHER_STATE_CHANGED====available:$available===active:$active====>" +
                    "error:$error===>isCompatCheckApOpen:${UtilsJava.isCompatCheckApOpen}")
            EventBus.getDefault().post(MsgOperationEvent(MsgOperationEvent.MsgHotSpotChangeState, if(UtilsJava.isCompatCheckApOpen) 1 else 0))
        }
      Utils.debugPrintln("======Stephen=======HotSpotStateReceiver==>"+UtilsJava.isHotSpotApOpen(context)+"/"+UtilsJava.isHotSpotApOpen2(context))
    }
}
//UtilsJava
//獲取熱點(diǎn)是否打開(kāi)方式1
public static boolean isHotSpotApOpen(Context context) {
    var isAPEnable = false;
    try {
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        Method method = wifiManager.getClass().getDeclaredMethod("getWifiApState");
        int state = (int) method.invoke(wifiManager);
        Field field = wifiManager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED");
        int value = (int) field.get(wifiManager);
        isAPEnable = state == value;
    } catch (Exception e) {
        e.printStackTrace();
    }
    if(!isAPEnable && isCompatCheckApOpen) isAPEnable = true;
    return isAPEnable;
}

//某些華為鴻蒙機(jī)型(比如JEF-AN00)需要兼容處理
public static boolean isCompatCheckApOpen = false;

//獲取熱點(diǎn)是否打開(kāi)方式2
public static boolean isHotSpotApOpen2(Context context) {
    var isAPEnable = false;
    try {
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        Method method = wifiManager.getClass().getDeclaredMethod("isWifiApEnabled");
        method.setAccessible(true);
        isAPEnable = (Boolean) method.invoke(wifiManager);
    } catch (Exception e) {
        e.printStackTrace();
    }
    if(!isAPEnable && isCompatCheckApOpen) isAPEnable = true;
    return isAPEnable;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容