2015-11-17 16 views
8

テザリングを有効にするために、プログラムで無線LANホットスポットを有効にすることはできますか?私はコードherehereを試しました。どちらの例も例外なく実行されますが、wifi設定の「Tethering &ポータブルホットスポット」のセクションでは、テザリングは無効です。これは社内のGoogleアプリでのみ可能ですか?wifiテザリングをプログラムで有効にする

EDIT:私はAndroid 5.1を使用しています。私は電話をかけなくてもこれをやろうとしています。

答えて

7

次のコードを試して、Wi-Fiテザリングをプログラムで有効にしてください。私はテストして、それは私のアプリケーションで動作しています。

public class WifiAccessManager { 

    private static final String SSID = "1234567890abcdef"; 
    public static boolean setWifiApState(Context context, boolean enabled) { 
     //config = Preconditions.checkNotNull(config); 
     try { 
      WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
      if (enabled) { 
       mWifiManager.setWifiEnabled(false); 
      } 
      WifiConfiguration conf = getWifiApConfiguration(); 
      mWifiManager.addNetwork(conf); 

      return (Boolean) mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class).invoke(mWifiManager, conf, enabled); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } 

    public static WifiConfiguration getWifiApConfiguration() { 
     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = SSID; 
     conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
     return conf; 
    } 
} 

使用法:

WifiAccessManager.setWifiApState(context, true); 

許可が必要:迅速な対応のための

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
+0

感謝を!これはwifiをオフにすることができますが、setWifiApStateはfalseを返し、テザリングは有効になりません。根付いた電話が必要ですか?私は電話を根付かせることなくこれをやろうとしています。 – CalumMcCall

+0

@CalumMcCallルート付き電話が必要ですか?私のデバイスは根っからず、機能しているので、そうは思わない。 –

+1

@CalumMcCallは、エラーを見るためにsetWifiApStateメソッドでprintStackTraceを試してください。 –

関連する問題