telephonymanager - unidos - Obteniendo el código de país del teléfono con Android
obtener informacion del telefono android studio (10)
1- Agregue esta matriz al archivo Strings.xml
<string-array name="CountryCodes" >
<item>93,AF</item>
<item>355,AL</item>
<item>213,DZ</item>
<item>376,AD</item>
<item>244,AO</item>
<item>672,AQ</item>
<item>54,AR</item>
<item>374,AM</item>
<item>297,AW</item>
<item>61,AU</item>
<item>43,AT</item>
<item>994,AZ</item>
<item>973,BH</item>
<item>880,BD</item>
<item>375,BY</item>
<item>32,BE</item>
<item>501,BZ</item>
<item>229,BJ</item>
<item>975,BT</item>
<item>591,BO</item>
<item>387,BA</item>
<item>267,BW</item>
<item>55,BR</item>
<item>673,BN</item>
<item>359,BG</item>
<item>226,BF</item>
<item>95,MM</item>
<item>257,BI</item>
<item>855,KH</item>
<item>237,CM</item>
<item>1,CA</item>
<item>238,CV</item>
<item>236,CF</item>
<item>235,TD</item>
<item>56,CL</item>
<item>86,CN</item>
<item>61,CX</item>
<item>61,CC</item>
<item>57,CO</item>
<item>269,KM</item>
<item>242,CG</item>
<item>243,CD</item>
<item>682,CK</item>
<item>506,CR</item>
<item>385,HR</item>
<item>53,CU</item>
<item>357,CY</item>
<item>420,CZ</item>
<item>45,DK</item>
<item>253,DJ</item>
<item>670,TL</item>
<item>593,EC</item>
<item>20,EG</item>
<item>503,SV</item>
<item>240,GQ</item>
<item>291,ER</item>
<item>372,EE</item>
<item>251,ET</item>
<item>500,FK</item>
<item>298,FO</item>
<item>679,FJ</item>
<item>358,FI</item>
<item>33,FR</item>
<item>689,PF</item>
<item>241,GA</item>
<item>220,GM</item>
<item>995,GE</item>
<item>49,DE</item>
<item>233,GH</item>
<item>350,GI</item>
<item>30,GR</item>
<item>299,GL</item>
<item>502,GT</item>
<item>224,GN</item>
<item>245,GW</item>
<item>592,GY</item>
<item>509,HT</item>
<item>504,HN</item>
<item>852,HK</item>
<item>36,HU</item>
<item>91,IN</item>
<item>62,ID</item>
<item>98,IR</item>
<item>964,IQ</item>
<item>353,IE</item>
<item>44,IM</item>
<item>972,IL</item>
<item>39,IT</item>
<item>225,CI</item>
<item>81,JP</item>
<item>962,JO</item>
<item>7,KZ</item>
<item>254,KE</item>
<item>686,KI</item>
<item>965,KW</item>
<item>996,KG</item>
<item>856,LA</item>
<item>371,LV</item>
<item>961,LB</item>
<item>266,LS</item>
<item>231,LR</item>
<item>218,LY</item>
<item>423,LI</item>
<item>370,LT</item>
<item>352,LU</item>
<item>853,MO</item>
<item>389,MK</item>
<item>261,MG</item>
<item>265,MW</item>
<item>60,MY</item>
<item>960,MV</item>
<item>223,ML</item>
<item>356,MT</item>
<item>692,MH</item>
<item>222,MR</item>
<item>230,MU</item>
<item>262,YT</item>
<item>52,MX</item>
<item>691,FM</item>
<item>373,MD</item>
<item>377,MC</item>
<item>976,MN</item>
<item>382,ME</item>
<item>212,MA</item>
<item>258,MZ</item>
<item>264,NA</item>
<item>674,NR</item>
<item>977,NP</item>
<item>31,NL</item>
<item>599,AN</item>
<item>687,NC</item>
<item>64,NZ</item>
<item>505,NI</item>
<item>227,NE</item>
<item>234,NG</item>
<item>683,NU</item>
<item>850,KP</item>
<item>47,NO</item>
<item>968,OM</item>
<item>92,PK</item>
<item>680,PW</item>
<item>507,PA</item>
<item>675,PG</item>
<item>595,PY</item>
<item>51,PE</item>
<item>63,PH</item>
<item>870,PN</item>
<item>48,PL</item>
<item>351,PT</item>
<item>1,PR</item>
<item>974,QA</item>
<item>40,RO</item>
<item>7,RU</item>
<item>250,RW</item>
<item>590,BL</item>
<item>685,WS</item>
<item>378,SM</item>
<item>239,ST</item>
<item>966,SA</item>
<item>221,SN</item>
<item>381,RS</item>
<item>248,SC</item>
<item>232,SL</item>
<item>65,SG</item>
<item>421,SK</item>
<item>386,SI</item>
<item>677,SB</item>
<item>252,SO</item>
<item>27,ZA</item>
<item>82,KR</item>
<item>34,ES</item>
<item>94,LK</item>
<item>290,SH</item>
<item>508,PM</item>
<item>249,SD</item>
<item>597,SR</item>
<item>268,SZ</item>
<item>46,SE</item>
<item>41,CH</item>
<item>963,SY</item>
<item>886,TW</item>
<item>992,TJ</item>
<item>255,TZ</item>
<item>66,TH</item>
<item>228,TG</item>
<item>690,TK</item>
<item>676,TO</item>
<item>216,TN</item>
<item>90,TR</item>
<item>993,TM</item>
<item>688,TV</item>
<item>971,AE</item>
<item>256,UG</item>
<item>44,GB</item>
<item>380,UA</item>
<item>598,UY</item>
<item>1,US</item>
<item>998,UZ</item>
<item>678,VU</item>
<item>39,VA</item>
<item>58,VE</item>
<item>84,VN</item>
<item>681,WF</item>
<item>967,YE</item>
<item>260,ZM</item>
<item>263,ZW</item>
</string-array>
2-CopyThis Función para su clase
public String GetCountryZipCode(){
String CountryID="";
String CountryZipCode="";
TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
//getNetworkCountryIso
CountryID= manager.getSimCountryIso().toUpperCase();
String[] rl=this.getResources().getStringArray(R.array.CountryCodes);
for(int i=0;i<rl.length;i++){
String[] g=rl[i].split(",");
if(g[1].trim().equals(CountryID.trim())){
CountryZipCode=g[0];
break;
}
}
return CountryZipCode;
}
Función de 3 llamadas GetCountryZipCode ()
4-escritura Gracias Wais.
Me gustaría saber cómo puedo obtener el código de país del dispositivo / usuario desde mi aplicación Android. Sé que hay una lib llamada TelephonyManager, pero no pude encontrar la función de código de país.
Para dejarme en claro: tengo una actividad en la que le pido al usuario que ingrese su número de teléfono y quiero que se quite el código de país del dispositivo (¿de su proveedor?) Si abriera mi aplicación en Nueva York obtendría +212 como código de país y un cuadro de texto para ingresar mi propio número
En clase TelephonyManager, encuentro un método public String getNetworkCountryIso ()
, esto puede ser lo que quieres. Además, hay algún otro método que puede devolver más información sobre el teléfono. Puede leer http://en.wikipedia.org/wiki/List_of_mobile_country_codes para ver qué país está representado por un MCC.
Esta pregunta me ayudó mucho, quiero darles a todos una clase que proporcione el código de país desde el código del teléfono y viceversa.
Uso:
-
CountryCodes.getCode(String country)
devuelve el código internacional del signo del país -
CountryCodes.getCountry(String code)
devuelve signos de país del código internacional
Se puede proporcionar una instancia de esta clase como adaptador para Vistas, por ejemplo en Activity onCreate:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout); // your layout xml
Spinner s = ( Spinner )findViewById( R.id.spinner1 ); // id of your spinner
CountryCodes cc = new CountryCodes( this );
s.setAdapter( cc );
TelephonyManager man = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
int index = CountryCodes.getIndex( man.getSimCountryIso() );
if( index > -1 )
{
s.setSelection( index );
}
}
Lo que sigue es el código de clase
CountryCodes.java
import java.util.ArrayList;
import java.util.Locale;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
* Call getCountry( String code ) to get matching country sign.
* Call getCode( String country ) to get matching phone code.
* It has been extended from BaseAdapter in order to make it compatible with Spinner,
* ListView and so on (just instance it and give it as adapter).
*
* This class is provided AS IS without any warranty.
*
* @author Niki Romagnoli
*
*/
public class CountryCodes extends BaseAdapter{
private static final String[] m_Countries = {
"AD",
"AE",
"AF",
"AL",
"AM",
"AN",
"AO",
"AQ",
"AR",
"AT",
"AU",
"AW",
"AZ",
"BA",
"BD",
"BE",
"BF",
"BG",
"BH",
"BI",
"BJ",
"BL",
"BN",
"BO",
"BR",
"BT",
"BW",
"BY",
"BZ",
"CA",
"CC",
"CD",
"CF",
"CG",
"CH",
"CI",
"CK",
"CL",
"CM",
"CN",
"CO",
"CR",
"CU",
"CV",
"CX",
"CY",
"CZ",
"DE",
"DJ",
"DK",
"DZ",
"EC",
"EE",
"EG",
"ER",
"ES",
"ET",
"FI",
"FJ",
"FK",
"FM",
"FO",
"FR",
"GA",
"GB",
"GE",
"GH",
"GI",
"GL",
"GM",
"GN",
"GQ",
"GR",
"GT",
"GW",
"GY",
"HK",
"HN",
"HR",
"HT",
"HU",
"ID",
"IE",
"IL",
"IM",
"IN",
"IQ",
"IR",
"IT",
"JO",
"JP",
"KE",
"KG",
"KH",
"KI",
"KM",
"KP",
"KR",
"KW",
"KZ",
"LA",
"LB",
"LI",
"LK",
"LR",
"LS",
"LT",
"LU",
"LV",
"LY",
"MA",
"MC",
"MD",
"ME",
"MG",
"MH",
"MK",
"ML",
"MM",
"MN",
"MO",
"MR",
"MT",
"MU",
"MV",
"MW",
"MX",
"MY",
"MZ",
"NA",
"NC",
"NE",
"NG",
"NI",
"NL",
"NO",
"NP",
"NR",
"NU",
"NZ",
"OM",
"PA",
"PE",
"PF",
"PG",
"PH",
"PK",
"PL",
"PM",
"PN",
"PR",
"PT",
"PW",
"PY",
"QA",
"RO",
"RS",
"RU",
"RW",
"SA",
"SB",
"SC",
"SD",
"SE",
"SG",
"SH",
"SI",
"SK",
"SL",
"SM",
"SN",
"SO",
"SR",
"ST",
"SV",
"SY",
"SZ",
"TD",
"TG",
"TH",
"TJ",
"TK",
"TL",
"TM",
"TN",
"TO",
"TR",
"TV",
"TW",
"TZ",
"UA",
"UG",
"US",
"UY",
"UZ",
"VA",
"VE",
"VN",
"VU",
"WF",
"WS",
"YE",
"YT",
"ZA",
"ZM",
"ZW"
};
private static final String[] m_Codes = {
"376",
"971",
"93",
"355",
"374",
"599",
"244",
"672",
"54",
"43",
"61",
"297",
"994",
"387",
"880",
"32",
"226",
"359",
"973",
"257",
"229",
"590",
"673",
"591",
"55",
"975",
"267",
"375",
"501",
"1",
"61",
"243",
"236",
"242",
"41",
"225",
"682",
"56",
"237",
"86",
"57",
"506",
"53",
"238",
"61",
"357",
"420",
"49",
"253",
"45",
"213",
"593",
"372",
"20",
"291",
"34",
"251",
"358",
"679",
"500",
"691",
"298",
"33",
"241",
"44",
"995",
"233",
"350",
"299",
"220",
"224",
"240",
"30",
"502",
"245",
"592",
"852",
"504",
"385",
"509",
"36",
"62",
"353",
"972",
"44",
"91",
"964",
"98",
"39",
"962",
"81",
"254",
"996",
"855",
"686",
"269",
"850",
"82",
"965",
"7",
"856",
"961",
"423",
"94",
"231",
"266",
"370",
"352",
"371",
"218",
"212",
"377",
"373",
"382",
"261",
"692",
"389",
"223",
"95",
"976",
"853",
"222",
"356",
"230",
"960",
"265",
"52",
"60",
"258",
"264",
"687",
"227",
"234",
"505",
"31",
"47",
"977",
"674",
"683",
"64",
"968",
"507",
"51",
"689",
"675",
"63",
"92",
"48",
"508",
"870",
"1",
"351",
"680",
"595",
"974",
"40",
"381",
"7",
"250",
"966",
"677",
"248",
"249",
"46",
"65",
"290",
"386",
"421",
"232",
"378",
"221",
"252",
"597",
"239",
"503",
"963",
"268",
"235",
"228",
"66",
"992",
"690",
"670",
"993",
"216",
"676",
"90",
"688",
"886",
"255",
"380",
"256",
"1",
"598",
"998",
"39",
"58",
"84",
"678",
"681",
"685",
"967",
"262",
"27",
"260",
"263"
};
private Context m_Context;
public CountryCodes( Context cxt )
{
super();
m_Context = cxt;
}
/**
* Get phone code from country sign.
*
* @param country: two-chars country sign to fetch ("US", "IT", "GB", ...)
* @return string of matching phone code ("1", "39", "44", ...). null if none matches.
*/
public static String getCode( String country )
{
int index = getIndex( country );
return index == -1? null: getCode(index);
}
/**
* Get international code at provided index.
*
* @param index: array index
* @return international code
*/
public static String getCode( int index )
{
return m_Codes[index];
}
/**
* Get country signs from phone code.
* More countries may match the same code.
*
* @param code: phone code to fetch ("1", "39", "44", ...)
* @return list of uppercase country signs (["US","PR","CA"], ["IT","VA"], ["GB","IM"], ...)
* Empty list if none matches.
*/
public static ArrayList<String> getCountry( String code )
{
ArrayList<String> matches = new ArrayList<String>();
getCountry(code, matches);
return matches;
}
/**
* Memory cheap version of country fetching: uses user provided list as output which outside
* could be recycled on desire.
*
* @param code: country sign to fetch
* @param matches: list to fill with matches, used as output
*/
public static void getCountry( String code, ArrayList<String> matches )
{
matches.clear();
for( int i=0; i<m_Codes.length; ++i )
if( m_Codes[i].equals( code ) )
matches.add(getCountry(i));
}
/**
* Returns country sign at specified index of internal array.
*
* @param index: index to fetch
* @return country sign
*/
public static String getCountry( int index )
{
return m_Countries[index];
}
/**
* Looks for country sign array index.
*
* @param country: country sign to search
* @return array index. -1 if none matches.
*/
public static int getIndex( String country )
{
String search = country.toUpperCase(Locale.getDefault());
for( int i=0; i<m_Countries.length; ++i )
if( m_Countries[i].equals( search ) )
return i;
return -1;
}
@Override
public int getCount() {
return m_Codes.length;
}
@Override
public Object getItem(int index) {
return m_Countries[index];
}
@Override
public long getItemId(int index) {
return index;
}
@Override
public View getView(int index, View recycleView, ViewGroup viewGroup) {
TextView view;
if( recycleView == null )
{
view = new TextView(m_Context);
view.setPadding(30, 10, 10, 10);
}
else
{
view = (TextView)recycleView;
}
view.setText(m_Countries[index]);
return view;
}
}
Lo estoy usando y parece funcionar pero, ya sabes, solo la muerte y los impuestos son ciertos. Siéntase libre de personalizarlo y sugerir correcciones.
HTH
Lo sé demasiado tarde. Pero tengo una solución de mezcla. Ya que hacerlo con la lista de String
y bucles podría ralentizarlo. Usar Hashmap
sería una solución de Hashmap
para ello. Escribí una clase de PhoneUtil
para eso. Aquí está el código (solo tengo 20 o más países, pero puede agregar más)
import android.content.Context;
import android.telephony.TelephonyManager;
import java.util.HashMap;
/**
* Created by Dell on 1/19/2017.
*/
public class PhoneUtil {
public static String getCountryCode(Context context) {
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (manager != null) {
return getCountryCodeFromMap(manager.getSimCountryIso().toUpperCase());
} else {
return null;
}
}
private static String getCountryCodeFromMap(String countryCode) {
HashMap<String, String> countryCodeMap = new HashMap<>();
countryCodeMap.put("TJ", "+992");
countryCodeMap.put("TZ", "+255");
countryCodeMap.put("TH", "+66");
countryCodeMap.put("TG", "+228");
countryCodeMap.put("TK", "+690");
countryCodeMap.put("TO", "+676");
countryCodeMap.put("TN", "+216");
countryCodeMap.put("TR", "+90");
countryCodeMap.put("TM", "+993");
countryCodeMap.put("TV", "+688");
countryCodeMap.put("AE", "+971");
countryCodeMap.put("UG", "+256");
countryCodeMap.put("GB", "+44");
countryCodeMap.put("UA", "+380");
countryCodeMap.put("UY", "+598");
countryCodeMap.put("US", "+1");
countryCodeMap.put("UZ", "+998");
countryCodeMap.put("VU", "+678");
countryCodeMap.put("VA", "+39");
countryCodeMap.put("VE", "+58");
countryCodeMap.put("VN", "+84");
countryCodeMap.put("WF", "+681");
countryCodeMap.put("YE", "+967");
countryCodeMap.put("ZM", "+260");
countryCodeMap.put("ZW", "+263");
countryCodeMap.put( "MY","+60");
countryCodeMap.put("PK","+92");
return countryCodeMap.get(countryCode);
}
}
Perdón por revivir un hilo muerto, pero pasé un tiempo tratando de resolver este problema, así que espero que mi respuesta ayude a alguien más.
El ejemplo en la pregunta original es confuso, usted dice que desea agregar el código de país, pero le da el código de área 212 de Nueva York como ejemplo; Ese no es un código de país, es un código de área local. El código de país para EE. UU. Es 1. Por lo tanto, le gustaría que el número final se vea como "1-212-xxx-xxxx". Mi respuesta a continuación explica cómo determinar el código de país, no el código de área local.
Para obtener el código de llamada del país para su propio número, use getSimCountryIso (). No use getNetworkCountryIso (); getNetworkCountryIso devolverá el país en el que se encuentra actualmente, pero si viaja, devolverá el país incorrecto. Por ejemplo, si eres de Albania pero viajas a Nueva York, getSimCountryIso devolverá "al", pero getNetworkCountryIso nos devolverá "us". Obviamente, si usa el código de país para EE. UU., Tiene el número equivocado.
Ahora tiene un código de país de dos caracteres; por ejemplo, Canadá será "ca". A continuación, puede utilizar esto como una clave de búsqueda para la tabla siguiente (obtenida de http://www.sikosoft.com/item/international_telephone_country_codes_in_xml_format_using_iso_639-1 ).
Dado que los códigos de país nunca cambian, es aceptable codificar una tabla de búsqueda en su aplicación. Lamentablemente, no parece haber una forma directa de obtener el código de país actual del usuario.
<?xml version=''1.0'' encoding=''UTF-8''?>
<icc>
<AF>93</AF>
<AL>355</AL>
<DZ>213</DZ>
<AD>376</AD>
<AO>244</AO>
<AQ>672</AQ>
<AR>54</AR>
<AM>374</AM>
<AW>297</AW>
<AU>61</AU>
<AT>43</AT>
<AZ>994</AZ>
<BH>973</BH>
<BD>880</BD>
<BY>375</BY>
<BE>32</BE>
<BZ>501</BZ>
<BJ>229</BJ>
<BT>975</BT>
<BO>591</BO>
<BA>387</BA>
<BW>267</BW>
<BR>55</BR>
<BN>673</BN>
<BG>359</BG>
<BF>226</BF>
<MM>95</MM>
<BI>257</BI>
<KH>855</KH>
<CM>237</CM>
<CA>1</CA>
<CV>238</CV>
<CF>236</CF>
<TD>235</TD>
<CL>56</CL>
<CN>86</CN>
<CX>61</CX>
<CC>61</CC>
<CO>57</CO>
<KM>269</KM>
<CG>242</CG>
<CD>243</CD>
<CK>682</CK>
<CR>506</CR>
<HR>385</HR>
<CU>53</CU>
<CY>357</CY>
<CZ>420</CZ>
<DK>45</DK>
<DJ>253</DJ>
<TL>670</TL>
<EC>593</EC>
<EG>20</EG>
<SV>503</SV>
<GQ>240</GQ>
<ER>291</ER>
<EE>372</EE>
<ET>251</ET>
<FK>500</FK>
<FO>298</FO>
<FJ>679</FJ>
<FI>358</FI>
<FR>33</FR>
<PF>689</PF>
<GA>241</GA>
<GM>220</GM>
<GE>995</GE>
<DE>49</DE>
<GH>233</GH>
<GI>350</GI>
<GR>30</GR>
<GL>299</GL>
<GT>502</GT>
<GN>224</GN>
<GW>245</GW>
<GY>592</GY>
<HT>509</HT>
<HN>504</HN>
<HK>852</HK>
<HU>36</HU>
<IN>91</IN>
<ID>62</ID>
<IR>98</IR>
<IQ>964</IQ>
<IE>353</IE>
<IM>44</IM>
<IL>972</IL>
<IT>39</IT>
<CI>225</CI>
<JP>81</JP>
<JO>962</JO>
<KZ>7</KZ>
<KE>254</KE>
<KI>686</KI>
<KW>965</KW>
<KG>996</KG>
<LA>856</LA>
<LV>371</LV>
<LB>961</LB>
<LS>266</LS>
<LR>231</LR>
<LY>218</LY>
<LI>423</LI>
<LT>370</LT>
<LU>352</LU>
<MO>853</MO>
<MK>389</MK>
<MG>261</MG>
<MW>265</MW>
<MY>60</MY>
<MV>960</MV>
<ML>223</ML>
<MT>356</MT>
<MH>692</MH>
<MR>222</MR>
<MU>230</MU>
<YT>262</YT>
<MX>52</MX>
<FM>691</FM>
<MD>373</MD>
<MC>377</MC>
<MN>976</MN>
<ME>382</ME>
<MA>212</MA>
<MZ>258</MZ>
<NA>264</NA>
<NR>674</NR>
<NP>977</NP>
<NL>31</NL>
<AN>599</AN>
<NC>687</NC>
<NZ>64</NZ>
<NI>505</NI>
<NE>227</NE>
<NG>234</NG>
<NU>683</NU>
<KP>850</KP>
<NO>47</NO>
<OM>968</OM>
<PK>92</PK>
<PW>680</PW>
<PA>507</PA>
<PG>675</PG>
<PY>595</PY>
<PE>51</PE>
<PH>63</PH>
<PN>870</PN>
<PL>48</PL>
<PT>351</PT>
<PR>1</PR>
<QA>974</QA>
<RO>40</RO>
<RU>7</RU>
<RW>250</RW>
<BL>590</BL>
<WS>685</WS>
<SM>378</SM>
<ST>239</ST>
<SA>966</SA>
<SN>221</SN>
<RS>381</RS>
<SC>248</SC>
<SL>232</SL>
<SG>65</SG>
<SK>421</SK>
<SI>386</SI>
<SB>677</SB>
<SO>252</SO>
<ZA>27</ZA>
<KR>82</KR>
<ES>34</ES>
<LK>94</LK>
<SH>290</SH>
<PM>508</PM>
<SD>249</SD>
<SR>597</SR>
<SZ>268</SZ>
<SE>46</SE>
<CH>41</CH>
<SY>963</SY>
<TW>886</TW>
<TJ>992</TJ>
<TZ>255</TZ>
<TH>66</TH>
<TG>228</TG>
<TK>690</TK>
<TO>676</TO>
<TN>216</TN>
<TR>90</TR>
<TM>993</TM>
<TV>688</TV>
<AE>971</AE>
<UG>256</UG>
<GB>44</GB>
<UA>380</UA>
<UY>598</UY>
<US>1</US>
<UZ>998</UZ>
<VU>678</VU>
<VA>39</VA>
<VE>58</VE>
<VN>84</VN>
<WF>681</WF>
<YE>967</YE>
<ZM>260</ZM>
<ZW>263</ZW>
</icc>
Si usa el Here de Here de Google de Here modos, y si trabaja con números de teléfono, es bastante probable que lo haga, puede usar sus datos internos que describen lo mismo. No es público, entonces debes usar la reflexión para alcanzarlo:
Map<Integer, List<String>> CountryCodeToRegionCodeMap_getCountryCodeToRegionCodeMap() {
try {
Method method = CountryCodeToRegionCodeMap.class.getDeclaredMethod("getCountryCodeToRegionCodeMap");
method.setAccessible(true);
return (Map<Integer, List<String>>) method.invoke(null);
}
catch (Exception e) {
Log.e(..., e.toString());
return null;
}
}
Luego puede buscar o procesar ese mapa para obtener los datos que desea.
Use la compile ''com.googlecode.libphonenumber:libphonenumber:8.0.1''
dependency. Esto facilita la tarea y proporciona resultados precisos porque es por google.
Here puedes saber más sobre esto.
La salida que obtengo es algo como esto:
Aquí estoy usando spinner.
1) He creado un Adaptador CountryCodesAdapter personalizado:
package com.amitupadhyay.getcountrycode;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckedTextView;
import android.widget.TextView;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
/**
* Created by aupadhyay on 1/24/17.
*/
public class CountryCodesAdapter extends BaseAdapter {
private final LayoutInflater mInflater;
private final List<CountryCode> mData;
private final int mViewId;
private final int mDropdownViewId;
private int mSelected;
public static final class CountryCode implements Comparable<String> {
public String regionCode;
public int countryCode;
public String regionName;
@Override
public int compareTo(String another) {
return regionCode != null && another != null ? regionCode.compareTo(another) : 1;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o != null && o instanceof CountryCode) {
CountryCode other = (CountryCode) o;
return regionCode != null &&
regionCode.equals(other.regionCode);
}
return false;
}
@Override
public String toString() {
return regionCode;
}
}
public CountryCodesAdapter(Context context, int viewId, int dropdownViewId) {
this(context, new ArrayList<CountryCode>(), viewId, dropdownViewId);
}
public CountryCodesAdapter(Context context, List<CountryCode> data, int viewId, int dropdownViewId) {
mInflater = LayoutInflater.from(context);
mData = data;
mViewId = viewId;
mDropdownViewId = dropdownViewId;
}
public void add(CountryCode entry) {
mData.add(entry);
}
public void add(String regionCode) {
CountryCode cc = new CountryCode();
cc.regionCode = regionCode;
cc.countryCode = PhoneNumberUtil.getInstance().getCountryCodeForRegion(regionCode);
cc.regionName = getRegionDisplayName(regionCode, Locale.getDefault());
mData.add(cc);
}
public void clear() {
mData.clear();
}
public void sort(Comparator<? super CountryCode> comparator) {
Collections.sort(mData, comparator);
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
CountryCode e = mData.get(position);
return (e != null) ? e.countryCode : -1;
}
public int getPositionForId(CountryCode cc) {
return cc != null ? mData.indexOf(cc) : -1;
}
public void setSelected(int position) {
mSelected = position;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
CheckedTextView textView;
View view;
if (convertView == null) {
view = mInflater.inflate(mDropdownViewId, parent, false);
textView = (CheckedTextView) view.findViewById(android.R.id.text1);
view.setTag(textView);
}
else {
view = convertView;
textView = (CheckedTextView) view.getTag();
}
CountryCode e = mData.get(position);
StringBuilder text = new StringBuilder(5)
.append(e.regionName)
.append(" (+")
.append(e.countryCode)
.append('')'');
textView.setText(text);
textView.setChecked((mSelected == position));
return view;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
View view;
if (convertView == null) {
view = mInflater.inflate(mViewId, parent, false);
textView = (TextView) view.findViewById(android.R.id.text1);
view.setTag(textView);
}
else {
view = convertView;
textView = (TextView) view.getTag();
}
CountryCode e = mData.get(position);
StringBuilder text = new StringBuilder(3)
.append(''+'')
.append(e.countryCode)
.append(" (")
.append(e.regionName)
.append('')'');
textView.setText(text);
return view;
}
/** Returns the localized region name for the given region code. */
public String getRegionDisplayName(String regionCode, Locale language) {
return (regionCode == null || regionCode.equals("ZZ") ||
regionCode.equals(PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY))
? "" : new Locale("", regionCode).getDisplayCountry(language);
}
}
2) Ahora el diseño de mi actividad en el que estoy mostrando el código del país es:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_simple"/>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="18dip" >
<Spinner android:id="@+id/phone_cc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spinnerMode="dialog"/>
<EditText
android:id="@+id/phone_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_validation_number"
android:inputType="phone" />
<Button
android:id="@+id/button_validate"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:text="@string/button_validate" />
</LinearLayout>
</ScrollView>
</LinearLayout>
3) El código de la actividad de Java está a continuación:
package com.amitupadhyay.getcountrycode;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import com.amitupadhyay.getcountrycode.CountryCodesAdapter.CountryCode;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
public class NumberValidation extends AppCompatActivity {
private Spinner mCountryCode;
private EditText mPhone;
private Button mValidateButton;
/**
* Compatibility method for {@link PhoneNumberUtil#getSupportedRegions()}.
* This was introduced because crappy Honeycomb has an old version of
* libphonenumber, therefore Dalvik will insist on we using it.
* In case getSupportedRegions doesn''t exist, getSupportedCountries will be
* used.
*/
@SuppressWarnings("unchecked")
private Set<String> getSupportedRegions(PhoneNumberUtil util) {
try {
return (Set<String>) util.getClass()
.getMethod("getSupportedRegions")
.invoke(util);
}
catch (NoSuchMethodException e) {
try {
return (Set<String>) util.getClass()
.getMethod("getSupportedCountries")
.invoke(util);
}
catch (Exception helpme) {
// ignored
}
}
catch (Exception e) {
// ignored
}
return new HashSet<>();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.number_validation);
//setupToolbar(false);
mCountryCode = (Spinner) findViewById(R.id.phone_cc);
mPhone = (EditText) findViewById(R.id.phone_number);
mValidateButton = (Button) findViewById(R.id.button_validate);
// populate country codes
final CountryCodesAdapter ccList = new CountryCodesAdapter(this,
android.R.layout.simple_list_item_1,
android.R.layout.simple_spinner_dropdown_item);
PhoneNumberUtil util = PhoneNumberUtil.getInstance();
Set<String> ccSet = getSupportedRegions(util);
for (String cc : ccSet)
ccList.add(cc);
ccList.sort(new Comparator<CountryCodesAdapter.CountryCode>() {
public int compare(CountryCodesAdapter.CountryCode lhs, CountryCodesAdapter.CountryCode rhs) {
return lhs.regionName.compareTo(rhs.regionName);
}
});
mCountryCode.setAdapter(ccList);
mCountryCode.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ccList.setSelected(position);
}
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
// FIXME this doesn''t consider creation because of configuration change
Phonenumber.PhoneNumber myNum = getMyNumber(this);
if (myNum != null) {
CountryCode cc = new CountryCode();
cc.regionCode = util.getRegionCodeForNumber(myNum);
if (cc.regionCode == null)
cc.regionCode = util.getRegionCodeForCountryCode(myNum.getCountryCode());
mCountryCode.setSelection(ccList.getPositionForId(cc));
mPhone.setText(String.valueOf(myNum.getNationalNumber()));
}
else {
final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
final String regionCode = tm.getSimCountryIso().toUpperCase(Locale.US);
CountryCode cc = new CountryCode();
cc.regionCode = regionCode;
cc.countryCode = util.getCountryCodeForRegion(regionCode);
mCountryCode.setSelection(ccList.getPositionForId(cc));
}
}
/** Returns the (parsed) number stored in this device SIM card. */
@SuppressLint("HardwareIds")
public Phonenumber.PhoneNumber getMyNumber(Context context) {
try {
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final String regionCode = tm.getSimCountryIso().toUpperCase(Locale.US);
return PhoneNumberUtil.getInstance().parse(tm.getLine1Number(), regionCode);
}
catch (Exception e) {
return null;
}
}
}
Pocas características adicionales:
a) Su país se seleccionará automáticamente en la ruleta.
Para lograr he usado esto:
Phonenumber.PhoneNumber myNum = getMyNumber(this);
if (myNum != null) {
CountryCode cc = new CountryCode();
cc.regionCode = util.getRegionCodeForNumber(myNum);
if (cc.regionCode == null)
cc.regionCode = util.getRegionCodeForCountryCode(myNum.getCountryCode());
mCountryCode.setSelection(ccList.getPositionForId(cc));
mPhone.setText(String.valueOf(myNum.getNationalNumber()));
}
else {
final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
final String regionCode = tm.getSimCountryIso().toUpperCase(Locale.US);
CountryCode cc = new CountryCode();
cc.regionCode = regionCode;
cc.countryCode = util.getCountryCodeForRegion(regionCode);
mCountryCode.setSelection(ccList.getPositionForId(cc));
}
Creo que este método es un poco mejor que otras formas enumeradas aquí. Así que publiqué esto. Espero que alguien lo encuentre útil :-)
Este proyecto en GitHub está here
agréguelos al string.xml Enjoy :)
<string-array name="country_code">
<item></item>
<item>
+93
</item>
<item>
+355
</item>
<item>
+213
</item>
<item>
+1684
</item>
<item>
+376
</item>
<item>
+244
</item>
<item>
+1264
</item>
<item>
+672
</item>
<item>
+1268
</item>
<item>
+54
</item>
<item>
+374
</item>
<item>
+297
</item>
<item>
+61
</item>
<item>
+43
</item>
<item>
+994
</item>
<item>
+1242
</item>
<item>
+973
</item>
<item>
+880
</item>
<item>
+1246
</item>
<item>
+375
</item>
<item>
+32
</item>
<item>
+501
</item>
<item>
+229
</item>
<item>
+1441
</item>
<item>
+975
</item>
<item>
+591
</item>
<item>
+387
</item>
<item>
+267
</item>
<item>
+55
</item>
<item>
+246
</item>
<item>
+1284
</item>
<item>
+673
</item>
<item>
+359
</item>
<item>
+226
</item>
<item>
+257
</item>
<item>
+855
</item>
<item>
+237
</item>
<item>
+1
</item>
<item>
+238
</item>
<item>
+1345
</item>
<item>
+236
</item>
<item>
+235
</item>
<item>
+56
</item>
<item>
+86
</item>
<item>
+61
</item>
<item>
+61
</item>
<item>
+57
</item>
<item>
+269
</item>
<item>
+682
</item>
<item>
+506
</item>
<item>
+385
</item>
<item>
+53
</item>
<item>
+599
</item>
<item>
+357
</item>
<item>
+420
</item>
<item>
+243
</item>
<item>
+45
</item>
<item>
+253
</item>
<item>
+1767
</item>
<item>
+1809
</item>
<item>
+670
</item>
<item>
+593
</item>
<item>
+20
</item>
<item>
+503
</item>
<item>
+240
</item>
<item>
+291
</item>
<item>
+372
</item>
<item>
+251
</item>
<item>
+500
</item>
<item>
+298
</item>
<item>
+679
</item>
<item>
+358
</item>
<item>
+33
</item>
<item>
+689
</item>
<item>
+241
</item>
<item>
+220
</item>
<item>
+995
</item>
<item>
+49
</item>
<item>
+233
</item>
<item>
+350
</item>
<item>
+30
</item>
<item>
+299
</item>
<item>
+1473
</item>
<item>
+1671
</item>
<item>
+502
</item>
<item>
+441481
</item>
<item>
+224
</item>
<item>
+245
</item>
<item>
+592
</item>
<item>
+509
</item>
<item>
+504
</item>
<item>
+852
</item>
<item>
+36
</item>
<item>
+354
</item>
<item>
+91
</item>
<item>
+62
</item>
<item>
+98
</item>
<item>
+964
</item>
<item>
+53
</item>
<item>
+441624
</item>
<item>
+972
</item>
<item>
+39
</item>
<item>
+225
</item>
<item>
+1876
</item>
<item>
+81
</item>
<item>
+441534
</item>
<item>
+962
</item>
<item>
+7
</item>
<item>
+254
</item>
<item>
+686
</item>
<item>
+383
</item>
<item>
+965
</item>
<item>
+996
</item>
<item>
+856
</item>
<item>
+371
</item>
<item>
+961
</item>
<item>
+266
</item>
<item>
+231
</item>
<item>
+218
</item>
<item>
+423
</item>
<item>
+370
</item>
<item>
+352
</item>
<item>
+853
</item>
<item>
+389
</item>
<item>
+261
</item>
<item>
+265
</item>
<item>
+60
</item>
<item>
+960
</item>
<item>
+223
</item>
<item>
+356
</item>
<item>
+692
</item>
<item>
+222
</item>
<item>
+230
</item>
<item>
+262
</item>
<item>
+52
</item>
<item>
+691
</item>
<item>
+373
</item>
<item>
+377
</item>
<item>
+976
</item>
<item>
+382
</item>
<item>
+1664
</item>
<item>
+212
</item>
<item>
+258
</item>
<item>
+95
</item>
<item>
+264
</item>
<item>
+674
</item>
<item>
+977
</item>
<item>
+31
</item>
<item>
+599
</item>
<item>
+687
</item>
<item>
+64
</item>
<item>
+505
</item>
<item>
+227
</item>
<item>
+234
</item>
<item>
+683
</item>
<item>
+850
</item>
<item>
+1670
</item>
<item>
+47
</item>
<item>
+968
</item>
<item>
+92
</item>
<item>
+680
</item>
<item>
+970
</item>
<item>
+507
</item>
<item>
+675
</item>
<item>
+595
</item>
<item>
+51
</item>
<item>
+63
</item>
<item>
+64
</item>
<item>
+48
</item>
<item>
+351
</item>
<item>
+1787
</item>
<item>
+974
</item>
<item>
+242
</item>
<item>
+262
</item>
<item>
+40
</item>
<item>
+7
</item>
<item>
+250
</item>
<item>
+590
</item>
<item>
+290
</item>
<item>
+1869
</item>
<item>
+1758
</item>
<item>
+590
</item>
<item>
+508
</item>
<item>
+1784
</item>
<item>
+685
</item>
<item>
+378
</item>
<item>
+239
</item>
<item>
+966
</item>
<item>
+221
</item>
<item>
+381
</item>
<item>
+248
</item>
<item>
+232
</item>
<item>
+65
</item>
<item>
+1721
</item>
<item>
+421
</item>
<item>
+386
</item>
<item>
+677
</item>
<item>
+252
</item>
<item>
+27
</item>
<item>
+82
</item>
<item>
+211
</item>
<item>
+34
</item>
<item>
+94
</item>
<item>
+249
</item>
<item>
+597
</item>
<item>
+47
</item>
<item>
+268
</item>
<item>
+46
</item>
<item>
+41
</item>
<item>
+963
</item>
<item>
+886
</item>
<item>
+992
</item>
<item>
+255
</item>
<item>
+66
</item>
<item>
+228
</item>
<item>
+690
</item>
<item>
+676
</item>
<item>
+1868
</item>
<item>
+216
</item>
<item>
+90
</item>
<item>
+993
</item>
<item>
+1649
</item>
<item>
+688
</item>
<item>
+1340
</item>
<item>
+256
</item>
<item>
+380
</item>
<item>
+971
</item>
<item>
+44
</item>
<item>
+1
</item>
<item>
+598
</item>
<item>
+998
</item>
<item>
+678
</item>
<item>
+379
</item>
<item>
+58
</item>
<item>
+84
</item>
<item>
+681
</item>
<item>
+212
</item>
<item>
967
</item>
<item>
260
</item>
<item>
263
</item>
</string-array>
<string-array name="country_arrays">
<item>Code</item>
<item>Afghanistan</item>
<item>Albania</item>
<item>Algeria</item>
<item>American Samoa</item>
<item>Andorra</item>
<item>Angola</item>
<item>Anguilla</item>
<item>Antarctica</item>
<item>Antigua and Barbuda</item>
<item>Argentina</item>
<item>Armenia</item>
<item>Aruba</item>
<item>Australia</item>
<item>Austria</item>
<item>Azerbaijan</item>
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
<item>Bermuda</item>
<item>Bhutan</item>
<item>Bolivia</item>
<item>Bosnia and Herzegovina</item>
<item>Botswana</item>
<item>Bouvet Island</item>
<item>Brazil</item>
<item>British Indian Ocean Territory</item>
<item>British Virgin Islands</item>
<item>Brunei</item>
<item>Bulgaria</item>
<item>Burkina Faso</item>
<item>Burundi</item>
<item>Cambodia</item>
<item>Cameroon</item>
<item>Canada</item>
<item>Cape Verde</item>
<item>Cayman Islands</item>
<item>Central African Republic</item>
<item>Chad</item>
<item>Chile</item>
<item>China</item>
<item>Christmas Island</item>
<item>Cocos (Keeling) Islands</item>
<item>Colombia</item>
<item>Comoros</item>
<item>Congo</item>
<item>Cook Islands</item>
<item>Costa Rica</item>
<item>Cote d/'Ivoire</item>
<item>Croatia</item>
<item>Cuba</item>
<item>Cyprus</item>
<item>Czech Republic</item>
<item>Democratic Republic of the Congo</item>
<item>Denmark</item>
<item>Djibouti</item>
<item>Dominica</item>
<item>Dominican Republic</item>
<item>East Timor</item>
<item>Ecuador</item>
<item>Egypt</item>
<item>El Salvador</item>
<item>Equatorial Guinea</item>
<item>Eritrea</item>
<item>Estonia</item>
<item>Ethiopia</item>
<item>Faeroe Islands</item>
<item>Falkland Islands</item>
<item>Fiji</item>
<item>Finland</item>
<item>Former Yugoslav Republic of Macedonia</item>
<item>France</item>
<item>French Guiana</item>
<item>French Polynesia</item>
<item>French Southern Territories</item>
<item>Gabon</item>
<item>Georgia</item>
<item>Germany</item>
<item>Ghana</item>
<item>Gibraltar</item>
<item>Greece</item>
<item>Greenland</item>
<item>Grenada</item>
<item>Guadeloupe</item>
<item>Guam</item>
<item>Guatemala</item>
<item>Guinea</item>
<item>Guinea-Bissau</item>
<item>Guyana</item>
<item>Haiti</item>
<item>Heard Island and McDonald Islands</item>
<item>Honduras</item>
<item>Hong Kong</item>
<item>Hungary</item>
<item>Iceland</item>
<item>India</item>
<item>Indonesia</item>
<item>Iran</item>
<item>Iraq</item>
<item>Ireland</item>
<item>Israel</item>
<item>Italy</item>
<item>Jamaica</item>
<item>Japan</item>
<item>Jordan</item>
<item>Kazakhstan</item>
<item>Kenya</item>
<item>Kiribati</item>
<item>Kuwait</item>
<item>Kyrgyzstan</item>
<item>Laos</item>
<item>Latvia</item>
<item>Lebanon</item>
<item>Lesotho</item>
<item>Liberia</item>
<item>Libya</item>
<item>Liechtenstein</item>
<item>Lithuania</item>
<item>Luxembourg</item>
<item>Macau</item>
<item>Madagascar</item>
<item>Malawi</item>
<item>Malaysia</item>
<item>Maldives</item>
<item>Mali</item>
<item>Malta</item>
<item>Marshall Islands</item>
<item>Martinique</item>
<item>Mauritania</item>
<item>Mauritius</item>
<item>Mayotte</item>
<item>Mexico</item>
<item>Micronesia</item>
<item>Moldova</item>
<item>Monaco</item>
<item>Mongolia</item>
<item>Montenegro</item>
<item>Montserrat</item>
<item>Morocco</item>
<item>Mozambique</item>
<item>Myanmar</item>
<item>Namibia</item>
<item>Nauru</item>
<item>Nepal</item>
<item>Netherlands</item>
<item>Netherlands Antilles</item>
<item>New Caledonia</item>
<item>New Zealand</item>
<item>Nicaragua</item>
<item>Niger</item>
<item>Nigeria</item>
<item>Niue</item>
<item>Norfolk Island</item>
<item>North Korea</item>
<item>Northern Marianas</item>
<item>Norway</item>
<item>Oman</item>
<item>Pakistan</item>
<item>Palau</item>
<item>Panama</item>
<item>Papua New Guinea</item>
<item>Paraguay</item>
<item>Peru</item>
<item>Philippines</item>
<item>Pitcairn Islands</item>
<item>Poland</item>
<item>Portugal</item>
<item>Puerto Rico</item>
<item>Qatar</item>
<item>Reunion</item>
<item>Romania</item>
<item>Russia</item>
<item>Rwanda</item>
<item>Sqo Tome and Principe</item>
<item>Saint Helena</item>
<item>Saint Kitts and Nevis</item>
<item>Saint Lucia</item>
<item>Saint Pierre and Miquelon</item>
<item>Saint Vincent and the Grenadines</item>
<item>Samoa</item>
<item>San Marino</item>
<item>Saudi Arabia</item>
<item>Senegal</item>
<item>Serbia</item>
<item>Seychelles</item>
<item>Sierra Leone</item>
<item>Singapore</item>
<item>Slovakia</item>
<item>Slovenia</item>
<item>Solomon Islands</item>
<item>Somalia</item>
<item>South Africa</item>
<item>South Georgia and the South Sandwich Islands</item>
<item>South Korea</item>
<item>South Sudan</item>
<item>Spain</item>
<item>Sri Lanka</item>
<item>Sudan</item>
<item>Suriname</item>
<item>Svalbard and Jan Mayen</item>
<item>Swaziland</item>
<item>Sweden</item>
<item>Switzerland</item>
<item>Syria</item>
<item>Taiwan</item>
<item>Tajikistan</item>
<item>Tanzania</item>
<item>Thailand</item>
<item>The Bahamas</item>
<item>The Gambia</item>
<item>Togo</item>
<item>Tokelau</item>
<item>Tonga</item>
<item>Trinidad and Tobago</item>
<item>Tunisia</item>
<item>Turkey</item>
<item>Turkmenistan</item>
<item>Turks and Caicos Islands</item>
<item>Tuvalu</item>
<item>Virgin Islands</item>
<item>Uganda</item>
<item>Ukraine</item>
<item>United Arab Emirates</item>
<item>United Kingdom</item>
<item>United States</item>
<item>United States Minor Outlying Islands</item>
<item>Uruguay</item>
<item>Uzbekistan</item>
<item>Vanuatu</item>
<item>Vatican City</item>
<item>Venezuela</item>
<item>Vietnam</item>
<item>Wallis and Futuna</item>
<item>Western Sahara</item>
<item>Yemen</item>
<item>Yugoslavia</item>
<item>Zambia</item>
<item>Zimbabwe</item>
</string-array>
en este caso, esto se vería así:
/**
* network iso code: referred and listed at:
* http://en.wikipedia.org/wiki/List_of_mobile_country_codes
*/
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Constants.DEVICE_COUNTRY = manager.getNetworkCountryIso();
Entonces, nadie tiene que mirar y verificar dos veces (el contexto es una variable local de un objeto Contexto válido). Constants.DEVICE_COUNTRY es de Type String :) (solo una variable)
This is code to put in your Main Activity to replace the code that Wais posted near the top of this page. Take the array that Wais posted and add that to your app in the resources. I might have slightly changed the name of the array to be stored in resources, other than that, this code should work well and be easier to read if you are learning:
public String getCountryCode()
{
String my_country_code_letters = getMyLocale().getCountry();
String[] country_codes = this.getResources().getStringArray(R.array.country_codes);
String my_country_code_number = null;
//------------------------------------------------------------------------------------------
for (int i=0; i < country_codes.length && i != (-1); i++)
{
/**split_code:
* 1) split_code[0] == numbers
* 2) split_code[1] == letters**/
String[] split_code = country_codes[i].split(",");
//--------------------------------------------------------------------------------------
if (split_code[1].matches(my_country_code_letters))
{
my_country_code_number = split_code[0];
break;
}
//--------------------------------------------------------------------------------------
}
//------------------------------------------------------------------------------------------
return my_country_code_number;
}
public Locale getMyLocale()
{
Log.i(TAG, "Running getMyLocale()");
Locale myLocale = "";
//------------------------------------------------------------------------------------------
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
{
myLocale = getBaseContext().getResources().getConfiguration().getLocales().get(0);
}
else
{
//noinspection deprecation
myLocale = getBaseContext().getResources().getConfiguration().locale;
}
//------------------------------------------------------------------------------------------
return myLocale;
}