Intereting Posts
Как изменить размер изображения на Android? Как работает синтаксис доступа к свойствам Kotlin для классов Java? Скрыть мягкую клавиатуру при потере фокуса Ошибка эмулятора Android: PANIC: Не удалось открыть: C: \ Users \ hallo \ .android / avd / myemu.ini Android Market In-App-Purchase: как получить валюту, которую пользователь будет платить? Новая версия Android Gradle Build System создает конфликты с именами пакетов с полномочиями поставщика Может ли Android NFC работать как тег NFC? Как разместить текстовое изображение с использованием позиции x, y AVD не запускается (SDK Tools 22.6.2) Android Spinner – Как сделать раскрывающийся список прозрачным? Как отключить кнопку внутри AlertDialog? Что-то не так в радиусе Corner Android Ошибка при использовании любых элементов библиотеки поддержки дизайна Android Намерение открыть профиль пользователя Instagram на Android Android: содержимое RecyclerView перепуталось после прокрутки

API 2.2 для Wi-Fi Wi-Fi

Какой вызов API мне нужно сделать в Android 2.2 (Froyo), чтобы создать точку доступа Wi-Fi (как видно из пункта настроек Tethering and Portable Hotspot).

Solutions Collecting From Web of "API 2.2 для Wi-Fi Wi-Fi"

Вы можете позвонить

private boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled);

Используя отражение 🙂

После получения WifiManager используйте отражение, чтобы получить объявленные WifiManager методы, найдите этот метод name setWifiApEnabled и вызовите его через объект WifiManager

Эти API отмечены как @hide, поэтому в настоящее время вы не можете использовать их напрямую, но они отображаются в AIDL для WifiManager, поэтому они доступны!

Примером может быть:

 WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); Method[] wmMethods = wifi.getClass().getDeclaredMethods(); for(Method method: wmMethods){ if(method.getName().equals("setWifiApEnabled")){ WifiConfiguration netConfig = new WifiConfiguration(); netConfig.SSID = "\"PROVAAP\""; netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); try { method.invoke(wifi, netConfig,true); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } 

Он работает, но я не могу изменить текущую конфигурацию с моей собственной, и получение текущей WifiConfiguration активной AP приведет меня к пустой конфигурации. Почему?

Это работает на API 8 и выше. Я использую сильно отличающуюся версию, а затем ниже (или выше) и столкнулся с тем же вопросом, на который столкнулся markov00; Не имея возможности загружать WifiConfiguration по умолчанию для портативного Wi-Fi AP. Я нашел решение в другом месте.

Если вам нравится решение, было бы неплохо, если бы это было принято в качестве ответа

 WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); Method[] wmMethods = wifi.getClass().getDeclaredMethods(); for (Method method: wmMethods){ if (method.getName().equals("setWifiApEnabled")){ try { // just nullify WifiConfiguration to load the default configuration ;) method.invoke(wifi, null, true); } catch (IllegalArgumentException e){ e.printStackTrace(); } catch (IllegalAccessException e){ e.printStackTrace(); } catch (InvocationTargetException e){ e.printStackTrace(); } } } 

Кажется, не существует вызова API для создания точки доступа Wi-Fi – извините!