Могу ли я включить WiFi-Direct из кода? На Android API-14 (ICS)

Я использую новый API Wi-Fi Direct от Google на Android 4.0 и в примере кода, который они отправляют пользователю в Настройки, для активации режима WiFi -Direct.

Есть ли способ запустить его по коду ???

Все, что они предлагают, это прослушивание WIFI_P2P_STATE_CHANGED_ACTION намерения, а затем использовать этот код

String action = intent.getAction(); if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) { // UI update to indicate wifi p2p status. int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1); if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) { // Wifi Direct mode is enabled } else { // Wifi Direct mode is disabled } 

Да, есть способ использования рефлексии. Работает на моем GSII (и изящно выходит из-за отсутствия Wifi Direct HTC Sensation), но поскольку это отражение, оно может не работать на всех телефонах.

 p2pManager = (WifiP2pManager) getSystemService(WIFI_P2P_SERVICE); channel = p2pManager.initialize(getApplicationContext(), getMainLooper(), null); try { Class<?> wifiManager = Class .forName("android.net.wifi.p2p.WifiP2pManager"); Method method = wifiManager .getMethod( "enableP2p", new Class[] { android.net.wifi.p2p.WifiP2pManager.Channel.class }); method.invoke(p2pManager, channel); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Пожалуйста, обратите внимание:

В Jelly Bean и выше, когда вы пытаетесь использовать API WifiP2pManager , WiFi-Direct автоматически включается (пока включен WiFi), поэтому нет необходимости использовать этот хак.

Нет, все, что вы могли бы сделать, это уведомить пользователя о включении WiFi.