Может ли стороннее приложение создать точку доступа на Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Может ли стороннее приложение создать точку доступа на Android?

Сообщение Anonymous »

Может ли стороннее приложение открыть точку доступа Wi-Fi на Android? Ниже изложена суть того, как я это делаю.

Код: Выделить всё

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();
}
}
В моем AndroidManifest.xml указаны следующие разрешения Но я получаю следующее исключение.

Код: Выделить всё

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?

Подробнее здесь: https://stackoverflow.com/questions/787 ... on-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»