Как получить корректный телефонный номер?
Добавлено: 26 янв 2015, 12:53
добрый день, вопрос довольно таки не простой (для меня по крайней мере), буду рад любой помощи
все нижесказнное делается с одной целью - выбрать в курсор входящие\исходящие смс, т.е. получить историю сообщений с конкретным номером
Для звонка, номер телефона внутри нашей страны (код страны 7), можно набрать как
"8922..." - при звонке внутри страны
"8904..."
"+7922..." - международный код
"+7904..."
- все варианты будут работать правильно
возьмем другую страну, например Украина (код страны 380)
"+38092..." - международный код
"092..." - при звонке внутри страны
как корректно обрабатывать номера всех стан внутри программы и делать по ним выборку через Cursor? ведь я могу записать свой номер как 8922..., а могу как +7922..., украинец может записать как "+38092...", так и "092..."
знаю что есть такие методы как
- PhoneNumberUtils.stripSeparators(contactNumber) преобразует номер вида 8-922-...к виду 8922
- так же могу получить разнообразные данные о телефоне (только метод telephonyManager.getLine1Number(); не срабатывает почему то)
- есть полный список стран и их кодов, пример:
<item>351,PT</item>
<item>1,PR</item>
<item>974,QA</item>
<item>40,RO</item>
<item>7,RU</item>
вот такая проблема, буду рад любой помощи или идеям по реализации
все нижесказнное делается с одной целью - выбрать в курсор входящие\исходящие смс, т.е. получить историю сообщений с конкретным номером
Для звонка, номер телефона внутри нашей страны (код страны 7), можно набрать как
"8922..." - при звонке внутри страны
"8904..."
"+7922..." - международный код
"+7904..."
- все варианты будут работать правильно
возьмем другую страну, например Украина (код страны 380)
"+38092..." - международный код
"092..." - при звонке внутри страны
как корректно обрабатывать номера всех стан внутри программы и делать по ним выборку через Cursor? ведь я могу записать свой номер как 8922..., а могу как +7922..., украинец может записать как "+38092...", так и "092..."
знаю что есть такие методы как
- PhoneNumberUtils.stripSeparators(contactNumber) преобразует номер вида 8-922-...к виду 8922
- так же могу получить разнообразные данные о телефоне (только метод telephonyManager.getLine1Number(); не срабатывает почему то)
Код: Выделить всё
String srvcName = Context.TELEPHONY_SERVICE;
TelephonyManager telephonyManager = (TelephonyManager)
getSystemService(srvcName);
int simState = telephonyManager.getSimState();
switch (simState) {
case (TelephonyManager.SIM_STATE_ABSENT): break;
case (TelephonyManager.SIM_STATE_NETWORK_LOCKED): break;
case (TelephonyManager.SIM_STATE_PIN_REQUIRED): break;
case (TelephonyManager.SIM_STATE_PUK_REQUIRED): break;
case (TelephonyManager.SIM_STATE_UNKNOWN): break;
case (TelephonyManager.SIM_STATE_READY): {
// Извлеките из SIM-карты код страны в формате ISO
String simCountry = telephonyManager.getSimCountryIso();
// Получите код оператора активной SIM-карты (MCC + MNC)
String simOperatorCode = telephonyManager.getSimOperator();
// Извлеките из SIM-карты название оператора
String simOperatorName = telephonyManager.getSimOperatorName();
// -- Требуется наличие полномочия READ_PHONE_STATE --
// Получите серийный номер SIM-карты
String simSerial = telephonyManager.getSimSerialNumber();
String CountryIso = telephonyManager.getNetworkCountryIso();
String number = telephonyManager.getLine1Number();
break;
}
default: break;
<item>351,PT</item>
<item>1,PR</item>
<item>974,QA</item>
<item>40,RO</item>
<item>7,RU</item>
вот такая проблема, буду рад любой помощи или идеям по реализации