如何在 Android 5.0 中使用 WiFi 热点
How to working WiFi hotspot in Android 5.0
为什么此代码在 android 5.0 中不起作用?
在 Android 5.0 中我应该调用什么方法来将它 On/Off 转为 On/Off ?
WifiConfiguration wificonfiguration = new WifiConfiguration();
wificonfiguration.SSID = "Wifi Hotspot";
wificonfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wificonfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wificonfiguration.preSharedKey = "123";
WifiManager mWifiManager;
mWifiManager = (WifiManager) this.context1.getSystemService(Context.WIFI_SERVICE);
try {
if (mWifiManager.isWifiEnabled()) { // disable WiFi in any case
mWifiManager.setWifiEnabled(false);
}
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(mWifiManager, wificonfiguration, true);
//Toast.makeText(context, "OK", 0).show();
} catch (Exception e) {
Log.e(this.getClass().toString(), "", e);
}
在清单中添加:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
您应该捕获特定的异常以更清楚地知道哪里出了问题。
试试这个 -
private boolean setWifiApEnabled()
{
boolean result = false;
// initialise you wifiManager first
wifiManager.setWifiEnabled(false);
Method enableWifi;
try {
enableWifi = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
} catch (NoSuchMethodException e) {
Logger.e(TAG,e.toString());
return result;
}
WifiConfiguration myConfig = new WifiConfiguration();
myConfig.SSID = "Your SSID";
myConfig.preSharedKey = "Your pass";
myConfig.status = WifiConfiguration.Status.ENABLED;
myConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
myConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
myConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
try {
result = (Boolean) enableWifi.invoke(wifiManager, myConfig,status);
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException e) {
Logger.e(TAG,e.toString());
return result;
}
return result;
}
为什么此代码在 android 5.0 中不起作用?
在 Android 5.0 中我应该调用什么方法来将它 On/Off 转为 On/Off ?
WifiConfiguration wificonfiguration = new WifiConfiguration();
wificonfiguration.SSID = "Wifi Hotspot";
wificonfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wificonfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wificonfiguration.preSharedKey = "123";
WifiManager mWifiManager;
mWifiManager = (WifiManager) this.context1.getSystemService(Context.WIFI_SERVICE);
try {
if (mWifiManager.isWifiEnabled()) { // disable WiFi in any case
mWifiManager.setWifiEnabled(false);
}
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
method.invoke(mWifiManager, wificonfiguration, true);
//Toast.makeText(context, "OK", 0).show();
} catch (Exception e) {
Log.e(this.getClass().toString(), "", e);
}
在清单中添加:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
您应该捕获特定的异常以更清楚地知道哪里出了问题。 试试这个 -
private boolean setWifiApEnabled()
{
boolean result = false;
// initialise you wifiManager first
wifiManager.setWifiEnabled(false);
Method enableWifi;
try {
enableWifi = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
} catch (NoSuchMethodException e) {
Logger.e(TAG,e.toString());
return result;
}
WifiConfiguration myConfig = new WifiConfiguration();
myConfig.SSID = "Your SSID";
myConfig.preSharedKey = "Your pass";
myConfig.status = WifiConfiguration.Status.ENABLED;
myConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
myConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
myConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
try {
result = (Boolean) enableWifi.invoke(wifiManager, myConfig,status);
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException e) {
Logger.e(TAG,e.toString());
return result;
}
return result;
}