通过反射获取与设置热点信息

2021-12-01  本文已影响0人  100个大西瓜

适用于AndroidN 7.1.1,其他版本未验证
使用前记得先获取属性,访问网络,修改设备网络
1.获取热点开启状态


    @SuppressLint("PrivateApi")
    public boolean getHotspotEnable() {
        try {
            final Method methodIsWifiApEnabled = mWifiManager
                    .getClass()
                    .getDeclaredMethod("isWifiApEnabled");
            return (Boolean) methodIsWifiApEnabled.invoke(mWifiManager);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

2.获取热点信息,如果未设置可能为空

    @Nullable
    private WifiConfiguration getWifiApConfiguration() {
        try {
            final Method method = mWifiManager.getClass().getMethod(
                    "getWifiApConfiguration");
            return (WifiConfiguration) method.invoke(mWifiManager);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

3.设置热点

    /**
     * apConfig.allowedKeyManagement.set(4): WifiConfiguration.WPA2_PSK = 4;
     *
     * @param name     热点名称
     * @param password 热点密码
     * @return 热点信息
     */
    private WifiConfiguration createApWifiConfiguration(String name, String password) {
        final WifiConfiguration apConfig = new WifiConfiguration();
        apConfig.SSID = name;
        apConfig.preSharedKey = password;
        apConfig.allowedKeyManagement.set(4);
        return apConfig;
    }

    /**
     * 设置热点
     *
     * @param apConfig 热点信息,包括了名称和密码
     * @param enable   true:开启;false关闭
     * @return true:设置成功;false:设置失败
     */
    private boolean toggleHotspotInfo(WifiConfiguration apConfig, boolean enable) {
        try {
            //通过反射调用设置热点
            final Method method = mWifiManager.getClass().getMethod(
                    "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
            return (Boolean) method.invoke(mWifiManager, apConfig, enable);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
上一篇 下一篇

猜你喜欢

热点阅读