0

我将通过 wifip2pmanager 在 android 中启动一个项目。似乎频道已成功创建(“初始化”)。但是对于下一步,我的代码不起作用(“discoverPeers 或 creategroup”)。下面的代码有什么问题吗?

public class MainActivity extends Activity {
        WifiP2pManager wifiMgr;
        Channel channel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wifiMgr = (WifiP2pManager)getSystemService(Context.WIFI_P2P_SERVICE);
        channel = wifiMgr.initialize(this,getMainLooper(),null);
        wifiMgr.discoverPeers(channel, new ActionListener(){

            @Override
            public void onFailure(int arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "discover fail."+arg0, 
                          Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onSuccess() {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "discover succ.", 
                          Toast.LENGTH_SHORT).show();
            }

        }); 
    }


}
4

1 回答 1

1

Google 文档指出“使用 initialize(Context, Looper, WifiP2pManager.ChannelListener) 注册应用程序处理程序需要权限 ACCESS_WIFI_STATE 和 CHANGE_WIFI_STATE 才能执行任何进一步的点对点操作。” 因此,您应该将这些权限添加到 manifest.xml。然后,代码中的下一步应该是处理广播接收器接收到的各种 WIFI_P2P_STATE_XXX 操作,您将提供和注册(通常在 onResume() 内部)

于 2015-04-20T16:08:54.470 回答