1

我正在开发一个需要设备创建接入点的应用程序。我正在 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){

    }
}
4

1 回答 1

0

我怀疑您的问题是您尝试连接的设备预计会从 Nexus 设备中的 DHCP 服务器提供 IP 地址等。您的代码只是创建一个访问点。您可能需要在链路的两端使用静态 IP 地址。也就是说,我不确定应该怎么做,因为我自己或多或少也有同样的问题。

请参阅无法以编程方式在 Jellybean 平板电脑上创建工作 Wi-Fi 接入点

我试图将 IP 地址与接入点相关联,尽管我似乎已经这样做了,但我仍然无法建立连接,所以恐怕我对你的问题只有部分答案。

于 2013-04-17T11:37:51.073 回答