LINUX.ORG.RU

т.е если Украина - +3, если Россия - +7 и тд

Да так и возьми, +3, +7.

Zhbert ★★★★★
()
Ответ на: комментарий от fehhner

а локально как взять страну? В общем нужно в форму подставить код страны перед номером телефона

bryak ★★★★
() автор топика
Последнее исправление: bryak (всего исправлений: 1)
Ответ на: комментарий от bryak

Сохранить табличку в локальный файл. Например, 1 строчка - двузначный код страны, затем её цифровой код. Ну и брать из файла (или массива) по коду выбранной страны и подставлять цифры.
https://ru.wikipedia.org/wiki/Телефонные_коды_стран

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 1)

Окей, я разобрался. Там можно взять

Locale.getDefault()

сделать string array с

<item>93,AF</item>

далее прочекать. Но! Я подумал, что этот метод неэффективный т.к страна может быть Россия, а у человека симка может быть другой страны. Как в этом случае быть?

Вот эта библиотека

https://github.com/mrmans0n/smart-location-lib

по идее тоже не подходит. Нужно как-то взять данные с симки. Или откуда-то еще

bryak ★★★★
() автор топика
Ответ на: комментарий от bryak

далее прочекать. Но! Я подумал, что этот метод неэффективный т.к страна может быть Россия, а у человека симка может быть другой страны. Как в этом случае быть?

Не понимаю, зачем изобретать велосипед? Человек может вообще устанавливать приложение на планшет без симки, а симку привязывать вставленную в кнопочный телефон.
Всё придумано за тебя давно: везде, где просят указать код страны при вводе номера телефона, стоит выбранным из списка с кодами и флажками (ну или названиями стран) твой. Исходя из локали на телефоне, например +7 (Russia). И можно нажать на него и поменять на другую страну при желании.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Если тебе нужно просто узнать, какой стране/оператору принадлежит его симка, а не для реги - тебе дали ссылку с методом.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Там пример не работает)

String srvName = Context.TELEPHONY_SERVICE;
TelephonyManager telMng = (TelephonyManager)getSystemService(srvName);

int phoneType = telMng.getSimCountryIso();

конвертирую в kotlin

val srvName: String  = Context.TELEPHONY_SERVICE
        val telMng = getSystemService(srvName)
        val phoneType: Int = telMng.getSimCountryIso()
        Log.d("TAG", phoneType)

out:

Unresolved reference: getSimCountryIso

Попробовал импортировать

import android.telephony.TelephonyManager

пишет нет такого метода

bryak ★★★★
() автор топика
Последнее исправление: bryak (всего исправлений: 1)
Ответ на: комментарий от bryak

(TelephonyManager)getSystemService(srvName);

конвертирую в kotlin

getSystemService(srvName)

А каст куда дел? Ну ты даешь.

Самое главное, что

Там пример не работает)

Именно что )

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)
Ответ на: комментарий от cdshines
val srvName: String  = Context.TELEPHONY_SERVICE
val telMng: TelephonyManager  = (TelephonyManager) getSystemService(srvName)
// val phoneType: Int = telMng.getSimCountryIso
Log.d("TAG", telMng.getSimCountryIso().toString())

out:

> Task :app:compileDebugKotlin FAILED
e: /home/user/media/source_project/socialkotlin/app/src/main/java/com/example/socialkotlin/MainActivity.kt: (184, 42): Classifier 'TelephonyManager' does not have a companion object, and thus must be initiali\
zed here
bryak ★★★★
() автор топика
Последнее исправление: bryak (всего исправлений: 3)
Ответ на: комментарий от bryak

вместо этого


val telMng: TelephonyManager  = (TelephonyManager) getSystemService(srvName)

попробуй может так


val telMng = getSystemService(Context.TELEPHONY_SERVICE) as TelMng
Log.d("TAG", TelMng.getSimCountryIso().toString())

anonymous
()
Ответ на: комментарий от anonymous

Манифест по пермишинам вообще настроен или может ты их получаешь динамически из кода?

anonymous
()
Ответ на: комментарий от bryak

Ты же даже не пробовал загуглить «kotlin cast”, имей совесть.

cdshines ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.