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


Можно ли программно получить номер телефона каждого устройства? Я попробовал этот код:

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

Это прекрасно работает с некоторыми поставщиками. К сожалению, он не работает с каждым поставщиком. Поэтому я ищу трюк или обходной путь, чтобы получить номер телефона устройства. Есть ли решение или это невозможно, потому что номер не хранится на sim-карте?

2 19

2 ответа:

Метод, который вы используете, является единственной частью SDK для этого и работает только на устройствах, где номер хранится на SIM-карте,что делают только некоторые операторы. Для всех других операторов связи вам придется попросить пользователя ввести номер телефона вручную, так как номер просто не хранится в любом месте устройства, откуда вы можете его получить.

Вы можете попробовать отправить определенное SMS провайдеру. Например, в Пекине (Китай), когда вы отправляете SMS "501" на 10001, вы получите свой номер телефона в полученном сообщении. Тогда вам нужно только знать, как отправить SMS и зарегистрировать BroadcastReceiver, чтобы получить сообщение.