android-management-api

Android management API(java) - how to set OpenNetworkConfiguration


I have a policy manager server implemented in java using this library

com.google.apis:google-api-services-androidmanagement:v1-rev20211122-1.32.1

The documentation refers that I can set an openNetworkConfiguration inside my policy, and there's a function that supports it.

 Policy().setOpenNetworkConfiguration(Map<String, Object>)

I have no idea how to fill in data to the parameter Map<String, Object>, and failed to find any clue on searching google and the sample pages. (https://developers.google.com/android/management/sample-app)

How can I put data like this inside the above parameter? Is there a better sample than the link above?

"openNetworkConfiguration": {
  "NetworkConfigurations": [{
    "GUID": "a",
    "Name": "Example A",
    "Type": "WiFi",
    "WiFi": {
      "SSID": "Example A",
      "Security": "None",
      "AutoConnect": true
    }
  }
}

Solution

  • To fill in the data for the Map<String, Object> parameter in the setOpenNetworkConfiguration method, you can manually create a nested structure using Java's HashMap

    import java.util.HashMap;
    import java.util.Map;
    
    // ...
    
    Map<String, Object> openNetworkConfig = new HashMap<>();
    Map<String, Object> networkConfiguration = new HashMap<>();
    Map<String, Object> wifiConfig = new HashMap<>();
    
    wifiConfig.put("SSID", "Example A");
    wifiConfig.put("Security", "None");
    wifiConfig.put("AutoConnect", true);
    
    networkConfiguration.put("GUID", "a");
    networkConfiguration.put("Name", "Example A");
    networkConfiguration.put("Type", "WiFi");
    networkConfiguration.put("WiFi", wifiConfig);
    
    openNetworkConfig.put("NetworkConfigurations", new Object[]{networkConfiguration});
    
    Policy policy = new Policy();
    policy.setOpenNetworkConfiguration(openNetworkConfig);
    

    Or you can use the Gson library to convert the JSON string to a Map<String, Object>

    import java.util.HashMap;
    import java.util.Map;
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    import java.lang.reflect.Type;
    
    
    // ...
    
    String json = "{'openNetworkConfiguration': {'NetworkConfigurations': [{'GUID': 'a', 'Name': 'Example A', 'Type': 'WiFi', 'WiFi': {'SSID': 'Example A', 'Security': 'None', 'AutoConnect': true}}]}}";
    
    Gson gson = new Gson();
    Type type = new TypeToken<Map<String, Object>>() {}.getType();
    Map<String, Object> openNetworkConfig = gson.fromJson(json, type);
    
    Policy policy = new Policy();
    policy.setOpenNetworkConfiguration(openNetworkConfig);