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)
Разрешается ли как-то стороннему пользователю создать точку доступа на Android?
Может ли стороннее приложение открыть точку доступа Wi-Fi на Android? Ниже изложена суть того, как я это делаю. [code]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.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(); } } [/code] В моем AndroidManifest.xml указаны следующие разрешения [code]
[/code] Но я получаю следующее исключение. [code]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) [/code] Разрешается ли как-то стороннему пользователю создать точку доступа на Android?