[java]
boolean isHtc = false;
try {
isHtc = WifiConfiguration.class
.getDeclaredField("mWifiApProfile") != null;
} catch (java.lang.NoSuchFieldException e) {
isHtc = false;
}
WifiConfiguration apConfig = new WifiConfiguration();
apConfig.SSID = "H3c_xx";
apConfig.preSharedKey = "h3ch3ch3c";
apConfig.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.WPA_PSK);
if (isHtc) {
setHTCSSID(apConfig);
}
// 通过反射调用设置热点
Method method;
method = wifiManager.getClass().getMethod("setWifiApEnabled",
WifiConfiguration.class, Boolean.TYPE);
// 返回热点打开状态
boolean flag = (Boolean) method.invoke(wifiManager, apConfig, true);
设置SSID和密码
[java]
public void setHTCSSID(WifiConfiguration config) {
try {
Field mWifiApProfileField = WifiConfiguration.class
.getDeclaredField("mWifiApProfile");
mWifiApProfileField.setAccessible(true);
Object hotSpotProfile = mWifiApProfileField.get(config);
mWifiApProfileField.setAccessible(false);
if (hotSpotProfile != null) {
Field ssidField = hotSpotProfile.getClass().getDeclaredField(
"SSID");
ssidField.setAccessible(true);
ssidField.set(hotSpotProfile, config.SSID);
ssidField.setAccessible(false);
Field localField3 = hotSpotProfile.getClass().getDeclaredField(
"key");
localField3.setAccessible(true);
localField3.set(hotSpotProfile, config.preSharedKey);
localField3.setAccessible(false);
Field localField6 = hotSpotProfile.getClass().getDeclaredField(
"dhcpEnable");
localField6.setAccessible(true);
localField6.setInt(hotSpotProfile, 1);
localField6.setAccessible(false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
可以通过遍历属性的方法查看还有那些可以修改的值:
[java]
public void dumpHTCWifiFunction2() {
Log.e(TAG, "dumpHTCWifiFunction2++");
// Method[] classMethods = null;
Field localField1;
Field[] fieldlist;
WifiConfiguration apConfig = new WifiConfiguration();
try {
localField1 = WifiConfiguration.class
.getDeclaredField("mWifiApProfile");
localField1.setAccessible(true);
Object localObject2 = localField1.get(apConfig);
localField1.setAccessible(false);
if (localObject2 != null) {
fieldlist = localObject2.getClass().getDeclaredFields();
for (int i = 0; i < fieldlist.length; i++) {
Log.e(TAG, "found api: " + fieldlist[i].getName()
+ " type:" + fieldlist[i].toString());
}
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Log.e(TAG, "dumpHTCWifiFunction2--");
}
如:
found api: DEFAULT_DHCP_MAX_AP_CONNECTION type:public static final int android.net.wifi.WifiConfiguration$HotspotProfile.DEFAULT_DHCP_MAX_AP_CONNECTION
found api: DEFAULT_MAX_AP_CONNECTION type:public static final int android.net.wifi.WifiConfiguration$HotspotProfile.DEFAULT_MAX_AP_CONNECTION
found api: DHCP_MAX_AP_CONNECTION type:public static final int android.net.wifi.WifiConfiguration$HotspotProfile.DHCP_MAX_AP_CONNECTION
found api: MAX_AP_CONNECTION type:public static final int android.net.wifi.WifiConfiguration$HotspotProfile.MAX_AP_CONNECTION
found api: OPEN type:public static final java.lang.String android.net.wifi.WifiConfiguration$HotspotProfile.OPEN
found api: WEP type:public static final java.lang.String android.net.wifi.WifiConfiguration$HotspotProfile.WEP
found api:
WPA ty