首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以从代码打开WiFi-Direct吗?Android API-14 (ICS)

我可以从代码打开WiFi-Direct吗?Android API-14 (ICS)
EN

Stack Overflow用户
提问于 2011-12-20 14:28:26
回答 3查看 10.5K关注 0票数 13

我在Android4.0上使用来自谷歌的新Wi-Fi Direct API,在示例代码中,他们将用户发送到设置,以激活WiFi -Direct模式。

有没有办法通过代码启动它?

它们所提供的全部功能就是监听WIFI_P2P_STATE_CHANGED_ACTION意图,然后使用以下代码

代码语言:javascript
运行
复制
String action = intent.getAction();

if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {

   // UI update to indicate wifi p2p status.
   int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);

   if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
       // Wifi Direct mode is enabled

   } else {
       // Wifi Direct mode is disabled
   }
EN

Stack Overflow用户

回答已采纳

发布于 2012-10-31 18:20:05

是的,有一种使用反射的方法。在我的GSII上工作(在非Wifi Direct HTC Sensation上失败),但由于这是反映,它可能不会在所有的手机上工作。

代码语言:javascript
运行
复制
p2pManager = (WifiP2pManager) getSystemService(WIFI_P2P_SERVICE);
channel = p2pManager.initialize(getApplicationContext(),
        getMainLooper(), null);

try {
    Class<?> wifiManager = Class
            .forName("android.net.wifi.p2p.WifiP2pManager");

    Method method = wifiManager
            .getMethod(
                "enableP2p",
                new Class[] { android.net.wifi.p2p.WifiP2pManager.Channel.class });

    method.invoke(p2pManager, channel);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

请注意:

在Jelly Bean及更高版本中,当您尝试使用WiFi时,WiFi-Direct会自动启用(只要WiFi开启),因此不需要使用此WifiP2pManager

票数 13
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8571566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档