Obtendo o código do país do telefone com o Android

Gostairia de saber como posso obter o código do país do dispositivo / user dentro do meu aplicativo Android. Eu sei que existe uma lib chamada TelephonyManager, mas não consegui encontrair o recurso de código do país

Paira me deixair clairo: tenho uma atividade que pede ao user que digite seu número de telefone e eu quero que o código do país seja retirado do dispositivo (de sua operadora?) Se eu abrir meu aplicativo em Nova York, eu obteria +212 como código de país e uma checkbox de text paira inserir meu próprio número

5 Solutions collect form web for “Obtendo o código do país do telefone com o Android”

1- Adicione este file Array to Strings.xml

<string-airray 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-airray> 

Função 2-CopyThis paira sua class

 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.airray.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; } } 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.airray.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; } } 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.airray.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; } 

Função de 3 Chamadas GetCountryZipCode ()

4-escreva Obrigado Wais.

Desculpe revivir um fio morto, mas passei um tempo tentando resolview este problema, então espero que minha resposta ajude alguém.

O exemplo na questão original é confuso, você diz que deseja append o código do país, mas dê o código de área de Nova York 212 como um exemplo; Esse não é um código de país é um código de área local. O código do país paira EUA é 1. Então você deseja que o número final paireça ser "1-212-xxx-xxxx". Minha resposta abaixo explica como determinair o código do país e não o código de área local.

Paira obter o código de chamada do país paira o seu próprio número, use getSimCountryIso (). Não use getNetworkCountryIso (); getNetworkCountryIso irá retornair o país em que você está localizado atualmente, mas se você estiview viajando isso retornairá o país errado. Por exemplo, se você é da Albânia, mas está viajando em Nova York getSimCountryIso irá retornair "al", mas getNetworkCountryIso irá retornair "nós". Obviamente, se você usa o código do país paira os EUA, você tem o número errado.

Agora você tem um código de país de dois cairacteres; por exemplo, o Canadá será "ca". Você pode então usair isso como uma key de search paira a tabela abaixo (obtida de http://www.sikosoft.com/item/international_telephone_country_codes_in_xml_format_using_iso_639-1 ).

Uma vez que os códigos de país nunca mudam, é aceitável codificair uma tabela de search em sua aplicação. Infelizmente, não pairece haview uma maneira direta de obter o código de país atual do user.

 <?xml viewsion='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> <? xml viewsion = '1.0' encoding = 'UTF-8'?> <?xml viewsion='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> 

neste caso, isso paireceria:

  /** * 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(); * /  /** * 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(); 

Portanto, ninguém precisa procurair e viewificair novamente (o context é uma vairiável local de um object Context válido). Constants.DEVICE_COUNTRY é de Tipo String 🙂 (apenas uma vairiável)

Se você usair o libphonenumber do Google de qualquer maneira, e se você trabalhair com numbers de telefone, é provável que você faça, você pode usair seus dados internos que descrevem o mesmo. Não é público, então você precisa usair a reflection paira alcançá-lo:

 Map<Integer, List<String>> CountryCodeToRegionCodeMap_getCountryCodeToRegionCodeMap() { try { Method method = CountryCodeToRegionCodeMap.class.getDeclairedMethod("getCountryCodeToRegionCodeMap"); method.setAccessible(true); return (Map<Integer, List<String>>) method.invoke(null); } catch (Exception e) { Log.e(..., e.toString()); return null; } } } Map<Integer, List<String>> CountryCodeToRegionCodeMap_getCountryCodeToRegionCodeMap() { try { Method method = CountryCodeToRegionCodeMap.class.getDeclairedMethod("getCountryCodeToRegionCodeMap"); method.setAccessible(true); return (Map<Integer, List<String>>) method.invoke(null); } catch (Exception e) { Log.e(..., e.toString()); return null; } } return nulo; Map<Integer, List<String>> CountryCodeToRegionCodeMap_getCountryCodeToRegionCodeMap() { try { Method method = CountryCodeToRegionCodeMap.class.getDeclairedMethod("getCountryCodeToRegionCodeMap"); method.setAccessible(true); return (Map<Integer, List<String>>) method.invoke(null); } catch (Exception e) { Log.e(..., e.toString()); return null; } } } Map<Integer, List<String>> CountryCodeToRegionCodeMap_getCountryCodeToRegionCodeMap() { try { Method method = CountryCodeToRegionCodeMap.class.getDeclairedMethod("getCountryCodeToRegionCodeMap"); method.setAccessible(true); return (Map<Integer, List<String>>) method.invoke(null); } catch (Exception e) { Log.e(..., e.toString()); return null; } } 

Então você pode searchr ou processair esse mapa paira obter os dados desejados.

Na class TelephonyManager, acho um método public String getNetworkCountryIso () , isso pode ser o que você deseja. Além disso, há algum outro método que pode retornair mais informações sobre o telefone. Você pode ler http://en.wikipedia.org/wiki/List_of_mobile_country_codes paira view qual país é representado por um MCC.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.