【问题标题】:Turning on wifi tethering programmatically以编程方式打开 wifi 网络共享
【发布时间】:2015-11-17 16:15:00
【问题描述】:

是否可以通过编程方式打开 wifi 热点以启用网络共享?我试过代码herehere。这两个示例都毫无例外地执行,但是当我查看 wifi 设置中的“网络共享和便携式热点”部分时,网络共享仍然被禁用。这是否仅适用于内部 Google 应用?

编辑:我使用的是 Android 5.1,并且我正在尝试这样做,而无需 root 手机。

【问题讨论】:

    标签: java android android-wifi


    【解决方案1】:

    尝试下面的代码,以编程方式打开 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;
        }
    }
    

    用法:

    WifiAccessManager.setWifiApState(context, true);
    

    权限要求:

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

    【讨论】:

    • 感谢您的快速回复!这确实可以关闭 wifi,但 setWifiApState 返回 false,并且网络共享没有被激活。我需要有根电话吗?我正在尝试在不植根手机的情况下执行此操作。
    • @CalumMcCall 我需要有根电话吗?我不这么认为,因为我的设备没有植根并且可以正常工作。
    • @CalumMcCall 可能你应该在 setWifiApState 方法中尝试 printStackTrace 以查看错误。
    • 原来我错过了“CHANGE_NETWORK_STATE”权限。感谢您的帮助!
    • 这在棉花糖之前效果很好。现在它不再起作用了。知道如何让它在 android 6 及更高版本中工作吗?可能是一些新的许可。他们改变了这一切,但我不知道去哪里找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多