Question
How can we know State and Country Picklist is enabled in the Salesforce org or not using Apex code
SOLUTION
When you enable that feature SFDC creates a countryCode field for each object where the address exists. Then you could check if that field exist using something like this:
system.debug(Account.getSobjectType().getDescribe().fields.getMap().keySet().contains('countryCode'));
Other generic option:
*
* check if an Sobject has a field
*/
public static boolean hasSObjectField(String fieldName, SObject so){
String s = JSON.serialize(so);
// Deserialize it back into a key/value map
Map<String, Object> obj = (Map<String, Object>) JSON.deserializeUntyped(s);
// Build a set containing the fields present on our SObject
Set<String> fieldsPresent = obj.keyset().clone();
return fieldsPresent.contains(fieldName);
}
Account a = new Account(name='Test');
System.debug(hasSObjectField('BillingCountryCode', a));
