Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何禁止P2P去接受另一个对等方(第二个客户端)的连接?_Android_P2p_Wifi Direct - Fatal编程技术网

Android 如何禁止P2P去接受另一个对等方(第二个客户端)的连接?

Android 如何禁止P2P去接受另一个对等方(第二个客户端)的连接?,android,p2p,wifi-direct,Android,P2p,Wifi Direct,我正在尝试创建一个P2P连接(组),它在android设备上只有一个所有者和一个客户端 原因是,如果我的GO设备接受第二个对等连接(刚刚按下邀请的窗口),它将收到P2P连接更改事件(断开连接)。我无法区分正常的P2P断开事件和这种情况 我的第一个解决方案是在第一次连接后忽略所有连接/断开连接事件,但这会造成其他站点影响。我想我找到了一个解决方案 当我们收到断开连接事件时,我们可以使用WifiP2pGroup检查GO和peer是否确实存在 当我们收到真正的p2p断开连接事件时,它无法找到GO或任何

我正在尝试创建一个P2P连接(组),它在android设备上只有一个所有者和一个客户端

原因是,如果我的GO设备接受第二个对等连接(刚刚按下邀请的窗口),它将收到P2P连接更改事件(断开连接)。我无法区分正常的P2P断开事件和这种情况


我的第一个解决方案是在第一次连接后忽略所有连接/断开连接事件,但这会造成其他站点影响。

我想我找到了一个解决方案

当我们收到断开连接事件时,我们可以使用WifiP2pGroup检查GO和peer是否确实存在

当我们收到真正的p2p断开连接事件时,它无法找到GO或任何对等点,反之亦然

例如:

else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
...
WifiP2pGroup p2pGroup = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP);
...
if ( p2pGroup != null ) {
    if ( p2pGroup.getOwner() != null ) {
        Log.d(TAG, "Go address: " + p2pGroup.getOwner().deviceAddress);
    }
    else {
        Log.d(TAG, "p2pGroup getOwner = null");
        return false;
    }

    Collection<WifiP2pDevice> peerList = p2pGroup.getClientList();
    ArrayList<WifiP2pDevice> list = new ArrayList<WifiP2pDevice>(peerList);

    Log.d(TAG, "p2pGroup list size = " + list.size());
    if ( list.size() <= 0 ) { 
        return false;
    }

    ///*
    String host = null;
    for (int i = 1; i < list.size(); i++) {
    host = list.get(i).deviceAddress;
    Log.d(TAG, "peer #" + i + " address: " + host);
    }
    //*/
    }
    else {
        Log.d(TAG, "p2pGroup = null");
            return false;
    }
else if(WifiP2pManager.WIFI\u P2P\u CONNECTION\u CHANGED\u ACTION.equals(ACTION)){
...
WifiP2pGroup p2pGroup=intent.getParcelableExtra(WifiP2pManager.EXTRA\u WIFI\u P2P\u组);
...
如果(p2pGroup!=null){
if(p2pGroup.getOwner()!=null){
Log.d(标记“Go address:+p2pGroup.getOwner().deviceAddress”);
}
否则{
Log.d(标记“p2pGroup getOwner=null”);
返回false;
}
集合peerList=p2pGroup.getClientList();
ArrayList=新的ArrayList(peerList);
Log.d(标记,“p2pGroup list size=“+list.size());
if(list.size()