1

我找到了可以更改和不能更改的系统设置列表(安全设置),但启用/禁用 Wifi-Direct (ICS) 不在其中。启动应用程序时如何自动打开 Wi-Fi Direct?

4

3 回答 3

3

不幸的是,没有公开的方式来实现这一点。ICS 和 JB 中的设置应用程序使用管理器类上的隐藏方法来切换服务为启用/禁用。

  • 在 ICS 中,使用了 WifiP2PManager.enableP2P() 和 WifiP2PManager.disableP2P(),这两种方法都是隐藏的。
  • 在 JB 中,使用了 NsdManager.setEnabled()。

所以这是可能的,因为这些类上确实存在方法。但是,由于这种差异,您必须创建非常特定于版本的反射代码,这些代码几乎肯定会在以后的版本中中断,以便直接从您的应用程序中提供功能。

更好的解决方案是检查该服务是否已启用,并向用户显示一个对话框,让他们直接进入“无线设置”页面以自行启用 WiFi Direct(如果他们愿意)。

于 2012-07-16T21:45:41.793 回答
1

JB 引入了并发的概念,这意味着只要 wifi 开启,应用程序就不必直接开启 wifi。

对于 ICS,最好将用户带到无线设置中,让他打开它。

于 2012-07-20T17:11:18.047 回答
-1

您是否尝试过使用WiFi 管理器?您应该能够在 Activity 中像这样切换它:

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (!wifi.isWifiEnabled()){
  wifi.setWifiEnabled(true);
}

这应该打开 WIFI,但不能保证一个有 Wifi 连接!您还可以使用 WifiManager 来查找WifiInfo

WifiInfo wifiInfo = wifi.getConnectionInfo();

或 ping 接入点

if (wifi.pingSupplicant()){
  //at least connected to a network
}
于 2012-07-16T21:16:17.430 回答