2017-04-08 52 views

回答

0

您可以使用下面的独立的类:

import android.content.*; 
import android.net.wifi.*; 
import java.lang.reflect.*; 

public class ApManager { 

    //check whether wifi hotspot on or off 
    public static boolean isApOn(Context context) { 
     WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE); 
     try { 
      Method method = wifimanager.getClass().getDeclaredMethod("isWifiApEnabled"); 
      method.setAccessible(true); 
      return (Boolean) method.invoke(wifimanager); 
     } 
     catch (Throwable ignored) {} 
     return false; 
    } 

    // toggle wifi hotspot on or off 
    public static boolean configApState(Context context) { 
     WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE); 
     WifiConfiguration wificonfiguration = null; 
     try { 
      // if WiFi is on, turn it off 
      if(isApOn(context)) { 
       wifimanager.setWifiEnabled(false); 
      } 
      Method method = wifimanager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); 
      method.invoke(wifimanager, wificonfiguration, !isApOn(context)); 
      return true; 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return false; 
    } 
} 

现在,一旦你已经创建的类以下权限将被添加到您的清单:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

做以上后,以下代码切换热点:

ApManager.configApState(MainActivity.this);

您需要通过准确的上下文来代替MainActivity.this

我很久以前就使用过这个类,并没有完全记得我从它那里得到的源代码。

+0

仍然不起作用。什么都没发生。 wifi只是关掉,就是这样。 – NobleSiks

+0

你目前使用哪个android版本?我在Android 6.0.1上,MIUI8。 –

相关问题