以编程方式在Android中创建WPA2 PSK接入点

时间:2014-12-26 05:17:31

标签: android android-wifi

我想通过以下配置以编程方式在android中创建Access Point。 AccessPointName :SomeName Security:WPA2 PSK Password:SomeKey

我该怎么做? 此致

3 个答案:

答案 0 :(得分:16)

我曾经遇到过这个问题。要创建WPA2 PSK访问点,需要使用WPA2 PSK参数填充WifiConfiguartion对象。但是,我找不到将app.use(function(req, res, next) { res.json = function(obj) { function delete_null_properties(obj) { // ... } delete_null_properties(obj); res.json(obj); }; next(); }); 设置为KeyManagement的方法。 WPA2_PSKWPA_PSKIEEE8021XWPA_EAP只有选项。然后我读了WifiConfiguration.java的android源代码。我能够发现NONE确实存在选项,但它被WPA2_PSK隐藏,但它是@hide,其值为int。所以我所做的就是在4中传递4。请参阅下面的代码。

wifiConfiguration.allowedKeyManagement.set(4);

最后使用accesspoint传递此WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "SomeName"; wifiConfiguration.preSharedKey = "SomeKey"; wifiConfiguration.hiddenSSID = false; wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); wifiConfiguration.allowedKeyManagement.set(4); wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); ,如下所示

wifiConfiguration

或者你可以在java中使用这个WifiApControl apControl = WifiApControl.getInstance(context); apControl.setEnabled(wifiConfiguration, true); 反射技术来激活接入点。

答案 1 :(得分:0)

How to create access point programmatically有一个SO主题。

但是,如果您看到该链接中的代码,则它使用JAVA Reflection技术来访问底层的Android框架API。 这可能表明没有直接API来切换或编程这些系统设置。

此外,查看Android文档中的Settings.System类的API摘要(BTW是“最终”类,它提示不会有太多可编辑的内容),没有证据表明Android为应用提供了任何API切换/程序系统设置。

我提到了该链接的引用只是为了强调这样一个事实,即调整Android系统设置如APN,似乎没有Android Framework提供的公共/直接API,主要是因为安全原因。

我们的项目中有一个要求,我需要以编程方式切换互联网广播,在另一种情况下,我需要忽略电话对话框。

没有公共API可以做到这一点,只有获得所需结果的方法是使用反射技术,既不推荐也不可移植,应该避免。

答案 2 :(得分:0)

当KeyMangement解决了我的问题时,我也面临同样的问题。

WifiConfiguration myConfig = new WifiConfiguration();
        myConfig.SSID = ssid; // SSID name of netwok
        myConfig.preSharedKey = password; // password for network
        myConfig.allowedKeyManagement.set(4); // 4 is for KeyMgmt.WPA2_PSK which is not exposed by android KeyMgmt class
        myConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); // Set Auth Algorithms to open
        try {
            Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
            return (Boolean) method.invoke(mWifiManager, myConfig, true);  // setting and turing on android wifiap with new configrations
        } catch (Exception e) {
            e.printStackTrace();
        }

Link

了解详情