Код: Выделить всё
public void setWifiApEnabled(int channel) {
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = "GunaMelodyHotspot";
wifiConfig.preSharedKey = "Melody123";
wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
// Using reflection to set the hotspot configuration
try {
Method setWifiApConfigurationMethod = wifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class);
setWifiApConfigurationMethod.invoke(wifiManager, wifiConfig);
Method getWifiApStateMethod = wifiManager.getClass().getMethod("getWifiApState");
int state = (int) getWifiApStateMethod.invoke(wifiManager);
if (state == 12 || state == 13) { // AP state is enabled or enabling
Method getWifiApConfigurationMethod = wifiManager.getClass().getMethod("getWifiApConfiguration");
WifiConfiguration currentConfig = (WifiConfiguration) getWifiApConfigurationMethod.invoke(wifiManager);
if (currentConfig != null) {
Field apBandField = currentConfig.getClass().getDeclaredField("apBand");
Field apChannelField = currentConfig.getClass().getDeclaredField("apChannel");
apBandField.setAccessible(true);
apChannelField.setAccessible(true);
apBandField.setInt(currentConfig, 0); // 0 for 2.4GHz, 1 for 5GHz
apChannelField.setInt(currentConfig, channel);
setWifiApConfigurationMethod.invoke(wifiManager, currentConfig);
}
} else {
Log.e("HotspotHelper", "Failed to set hotspot configuration");
}
} catch (Exception e) {
e.printStackTrace();
}
}
Код: Выделить всё
Код: Выделить всё
W System.err: Caused by: java.lang.SecurityException: App not allowed to read or update stored WiFi AP config (uid = 10370)
W System.err: at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
W System.err: at android.os.Parcel.createException(Parcel.java:3053)
W System.err: at android.os.Parcel.readException(Parcel.java:3036)
W System.err: at android.os.Parcel.readException(Parcel.java:2978)
W System.err: at android.net.wifi.IWifiManager$Stub$Proxy.setWifiApConfiguration(IWifiManager.java:4742)
W System.err: at android.net.wifi.WifiManager.setWifiApConfiguration(WifiManager.java:6078)
W System.err: ... 19 more
W System.err: Caused by: android.os.RemoteException: Remote stack trace:
W System.err: at com.android.server.wifi.WifiServiceImpl.setWifiApConfiguration(WifiServiceImpl.java:2872)
W System.err: at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:2281)
W System.err: at android.os.Binder.execTransactInternal(Binder.java:1375)
W System.err: at android.os.Binder.execTransact(Binder.java:1311)
Подробнее здесь: https://stackoverflow.com/questions/787 ... on-android