我正在开发一款需要设备创建接入点的应用。我正在测试Nexus 7(Android 4.2.1)和Nexus 10(4.2.2)上的代码,我在两者中都遇到了同样的问题。我设法启用接入点,但每个尝试连接的设备都保持“获取IP地址”。知道为什么吗?我在Galaxy tab 10“(Android 4.0.3)中测试了相同的代码,它的工作非常完美。
private void createWifiAccessPoint(String pSSID)
{
if(mWifiManager.isWifiEnabled())
{
mWifiManager.setWifiEnabled(false);
}
Method[] wmMethods = mWifiManager.getClass().getDeclaredMethods();
boolean methodFound=false;
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled"))
{
methodFound=true;
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = pSSID;
try {
boolean apstatus = (Boolean) method.invoke(mWifiManager, netConfig,true);
for (Method isWifiApEnabledmethod: wmMethods)
{
if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled"))
{
while(!(Boolean)isWifiApEnabledmethod.invoke(mWifiManager)){
};
for(Method method1: wmMethods){
if(method1.getName().equals("getWifiApState")){
int apstate;
apstate=(Integer)method1.invoke(mWifiManager);
Toast.makeText(this, netConfig.SSID + String.valueOf(apstate), Toast.LENGTH_LONG).show();
}
}
}
}
if(apstatus)
{
System.out.println("success");
}else
{
System.out.println("failed");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
if(!methodFound){
}
}
答案 0 :(得分:0)
我怀疑您的问题是,您尝试连接的设备预计会从Nexus设备的DHCP服务器提供IP地址等。您的代码只是创建一个访问点。您可能需要在链路的两端都有一个静态IP地址。也就是说,我不确定应该怎么做,因为我自己或多或少都有同样的问题。
请参阅Unable to programatically create working Wi-Fi access point on Jellybean tablet
我试图将IP地址与接入点关联起来,虽然我似乎已经这样做了,但我仍然无法建立连接,所以我只能部分回答你的问题。我担心。 / p>