0

我有一个表单,其中我获取用户详细信息,因为我有一个名为电话号码的字段和编辑文本以放置电话号码。

我觉得如果该edittext自动由用户电话号码填充,那就太好了。有没有什么方法可以自动用国家代码填充用户电话号码?

下面的代码发布在stackoverflow上我认为它可能在某些情况下可以工作任何人都可以帮助我吗?

private String getMyPhoneNumber() {
  TelephonyManager mTelephonyMgr;
  mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  return mTelephonyMgr.getLine1Number();
}
4

3 回答 3

0

请在您的编辑文本中设置该电话号码,如下所示 edittext.setText(mTelephonyMgr.getLine1Number())

于 2013-09-26T09:32:16.530 回答
0

我觉得如果edittext自动由用户电话号码填充会很棒
要解决上述问题,最好的办法是使用,

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();

当然添加了许可

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  

但问题是getLine1Number()的文档说如果数字“不可用”,此方法将返回 null,但它没有说明数字何时可能不可用。

有没有什么方法可以自动用国家代码填充用户电话号码?
为了解决这个问题,不幸的是似乎没有直接的方法来获取用户当前的国家代码。但是由于国家代码永远不会改变,因此可以在应用程序中对查找表进行硬编码。

<?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>
于 2013-09-26T09:32:34.437 回答
-1

有很多与此相关的问题。

您的方法依赖于存储在 SIM 卡上的电话号码,这种情况很少见。

最可靠的方法是让用户自己输入数字。尽管让 getLine1Number() 方法先尝试设置数字并没有什么坏处。

我选择让我的应用程序向该号码发送一条带有唯一消息的短信,收到该短信后,即可完成对输入号码的验证。然后该数字最终存储在 sharedPreference 中。

如果用户更改 sim,这种方法当然会运行很短,但如果您需要处理,也可以通过保存 IMEI 来完成,以便在应用程序启动时检查它。

于 2013-09-26T09:25:55.937 回答