Программно получить номер телефона телефона Android

В C аргументы функций передаются по значению. Таким образом, копия сделана из вашего аргумента, и изменение сделано для этой копии, а не фактический указатель, который вы ожидаете увидеть измененным. Вам нужно будет изменить свою функцию, чтобы принять аргумент двойного указателя и внести изменение в аргумент разыменования, если вы хотите это сделать. Например,

 void foo(int** p) {
      *p = 0;  /* set pointer to null */
 }
 void foo2(int* p) {
      p = 0;  /* makes copy of p and copy is set to null*/
 }

 int main() {
     int* k;
     foo2(k);   /* k unchanged */
     foo(&k);   /* NOW k == 0 */
 }

Если у вас есть возможность использовать C ++, альтернативный способ заключается в том, чтобы изменить функцию, чтобы принять ссылку на указатель.

420
задан bluish 9 December 2014 в 09:53
поделиться

1 ответ

Код:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

Требуемое разрешение:

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

Предостережения:

Согласно комментариям, получившим большое количество голосов, есть несколько предостережений, о которых следует помнить . Это может вернуть null или "" или даже "???????" , а также может вернуть устаревший номер телефона, который больше не действителен. . Если вам нужно что-то, что однозначно идентифицирует устройство, вы должны использовать вместо этого getDeviceId () .

476
ответ дан 22 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: