2014-05-14 13 views

Odpowiedz

1

Jeśli chcesz po prostu zignorować istniejące połączenie WiFiP2p, po prostu zadzwoń pod numer WiFiP2pManager#removeGroup. Nie ma znaczenia urządzenie GO lub peer.

Jeśli mówisz o zapominaniu o upartych grupach - możesz je również usunąć. Ale można to osiągnąć jedynie poprzez refleksję. I bez względu na to urządzenie GO lub peer.

manager.removeGroup(channel, new WifiP2pManager.ActionListener() { 
    @Override 
    public void onSuccess() { 
     Log.d(TAG, "removeGroup success"); 
     deletePersistentGroup(group); 
    } 

    @Override 
    public void onFailure(int reason) { 
     Log.d(TAG, "removeGroup fail: " + reason); 
    } 
}); 

Gdzie manager jest instancją WiFip2pManager. I deletePersistanteGroup(WiFiP2pGroup group) jest:

private void deletePersistentGroup(WifiP2pGroup wifiP2pGroup) { 
    try { 

     Method getNetworkId = WifiP2pGroup.class.getMethod("getNetworkId"); 
     Integer networkId = (Integer) getNetworkId.invoke(wifiP2pGroup); 
     Method deletePersistentGroup = WifiP2pManager.class.getMethod("deletePersistentGroup", 
       WifiP2pManager.Channel.class, int.class, WifiP2pManager.ActionListener.class); 
     deletePersistentGroup.invoke(manager, channel, networkId, new WifiP2pManager.ActionListener() { 
      @Override 
      public void onSuccess() { 
       Log.e(TAG, "deletePersistentGroup onSuccess"); 
      } 

      @Override 
      public void onFailure(int reason) { 
       Log.e(TAG, "deletePersistentGroup failure: " + reason); 
      } 
     }); 
    } catch (NoSuchMethodException e) { 
     Log.e("WIFI", "Could not delete persistent group", e); 
    } catch (InvocationTargetException e) { 
     Log.e("WIFI", "Could not delete persistent group", e); 
    } catch (IllegalAccessException e) { 
     Log.e("WIFI", "Could not delete persistent group", e); 
    } 
} 

UPD

Aby stał się GO należy zadzwonić WiFiP2pManager # createGroup() przed wysłaniem zaproszeń do rówieśników.