【问题标题】:Change Configuration of mobile Hotspot更改移动热点配置
【发布时间】:2012-10-10 15:32:28
【问题描述】:

我正在尝试使用新名称和开放可访问性运行热点。

    wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    wifiConfig.SSID = "\"MySSID\"";
    wifiConfig.networkId = 1;
    methodNum = getMethodNumber("setWifiApEnabled");
    try {
        wmMethods[methodNum].invoke(wifiManager, wifiConfig, true);
    } catch (IllegalArgumentException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IllegalAccessException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (InvocationTargetException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }        

我得到了正确的方法,它似乎在手机上启动了热点, 但配置没有改变。

我尝试使用 getWifiApConfiguration 获取当前配置数据 我什么也得不到,没有 ssid,也没有当前的加密。

我正在使用 HTC Evo 3d 进行调试。

【问题讨论】:

  • 这些是我尝试过的权限:ACCESS_WIFI_STATE。 UPDATE_DEVICE_STATS、CHANGE_WIFI_STATE、UPDATE_DEVICE_STATS。 CHANGE_NETWORK_STATE。 WRITE_SETTINGS
  • @user1624426 您是在尝试使用该配置连接到 wifi,还是想让您的手机成为网络共享(热点)设备?

标签: android android-wifi


【解决方案1】:

一些 htc 手机似乎使用 HotspotProfile 类型的类来保持其配置。所以,在调用setWifiApEnabled之前,你需要按照htc的方式设置ssid:

if (isHtc) setHTCSSID(config);
methodNum = getMethodNumber("setWifiApEnabled");
try {
    wmMethods[methodNum].invoke(wifiManager, wifiConfig, true);
    ...

isHtc 可以这样计算:

 try { isHtc = null!=WifiConfiguration.class. getDeclaredField("mWifiApProfile");  }
 catch (java.lang.NoSuchFieldException e) { isHtc = false }

而 setHCSSID 将是:

public void setHTCSSID(WifiConfiguration config) {
    try {
        Field mWifiApProfileField = WifiConfiguration.class.getDeclaredField("mWifiApProfile");
        mWifiApProfileField.setAccessible(true);
        Object hotSpotProfile = mWifiApProfileField.get(config);
        mWifiApProfileField.setAccessible(false);

        if(hotSpotProfile!=null){
            Field ssidField = hotSpotProfile.getClass().getDeclaredField("SSID");
            ssidField.setAccessible(true);
            ssidField.set(hotSpotProfile, config.SSID);
            ssidField.setAccessible(false);

        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

我在一些中文博客中找到了这些信息:http://xiaxingwork.iteye.com/blog/1727722http://blog.sina.com.cn/s/blog_53dd443a010109i8.html

【讨论】:

  • 嗨@luis,我想在我的htc手机中创建热点,我创建了它,但我无法连接到我的热点,它会配置IP地址,但永远不会完成我的完整问题在这里@987654323 @你能帮帮我吗?
【解决方案2】:

这似乎是 HTC 的问题。 我的一些朋友在 HTC 和其他设备上尝试过类似的代码。没有在 HTC 上工作,在其他人身上工作过。

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多