Может ли стороннее приложение создать точку доступа на 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»