You need:
* getSupportedRegions() to get the list of region codes
* getCountryCodeForRegion(regionCode) to get the country calling code for each one (1, 44 etc)
And then to get the actual names, you should use ICU4J ->
http://icu-project.org/apiref/icu4j/ --> it will get you country names from these region codes in whatever language your user speaks. (getDisplayCountry())
What are you planning on doing for non-countries, e.g. +800? Do you want to support those? Because we don't have names for those, but you can get the calling codes with getSupportedGlobalNetworkCallingCodes.