我想通过以下配置以编程方式在android中创建Access Point。
AccessPointName :SomeName
Security:WPA2 PSK
Password:SomeKey
我该怎么做? 此致
答案 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_PSK
,WPA_PSK
,IEEE8021X
和WPA_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
了解详情