android開啟/關閉熱點封裝類
阿新 • • 發佈:2019-01-29
許可權
//允許程式改變Wi-Fi連線狀態
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
//允許程式訪問Wi-Fi網路狀態資訊
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
熱點封裝類
package com.example.thrdemo; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import java.lang.reflect.Method; /** * 熱點類 * Created by yk on 2018/7/10. */ public class Hotspot { WifiManager wifiManager; public Hotspot(Context context) { wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } /** * 設定熱點狀態 * * @param HotspotName 熱點名稱 * @param enabled true:開啟熱點;false:關閉熱點 * @return 是否設定成功 */ public boolean setWifiApEnabled(String HotspotName, String HotspotPwd, boolean enabled) { if (wifiManager == null) return false; if (wifiManager.isWifiEnabled()) { // disable WiFi in any case // wifi和熱點不能同時開啟,所以開啟熱點的時候需要關閉wifi wifiManager.setWifiEnabled(false); } try { // 熱點的配置類 WifiConfiguration apConfig = new WifiConfiguration(); // 配置熱點的名稱 apConfig.SSID = HotspotName; // 配置熱點的密碼 apConfig.preSharedKey = HotspotPwd; apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); // 通過反射呼叫設定熱點 Method method = wifiManager.getClass().getMethod( "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); // 返回熱點開啟狀態 return (Boolean) method.invoke(wifiManager, apConfig, enabled); } catch (Exception e) { return false; } } }