以编程方式打开wifi网络共享

Cal*_*all 8 java android android-wifi

是否可以通过编程方式打开wifi热点,以启用网络共享?我在这里这里尝试过代码.两个示例都毫无例外地执行,但是当我查看wifi设置中的"Tethering&portable hotspot"部分时,仍然禁用了共享.这仅适用于内部Google应用吗?

编辑:我正在使用Android 5.1,我试图这样做而不必根电话.

Dha*_*tel 7

尝试以下代码,以编程方式打开wifi网络共享.我已经测试过,它正在我的应用程序中工作.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

WifiAccessManager.setWifiApState(context, true);
Run Code Online (Sandbox Code Playgroud)

许可要求:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

  • 这种效果很好,直到棉花糖.现在它不再起作用了.知道如何让它在Android 6及更高版本中运行吗?可能是一些新的许可事情.他们改变了这一切,但我不知道在哪里看. (2认同)