'2018/05/07'에 해당되는 글 1건

728x90

로그인한 폰의 전화번호를 자동으로 인식하여 가져오는 코드다.

DB 에 등록된 전화번호와 로그인한 전화번호가 다른지 파악해 달라는 요청으로 검색하고 수정했다.


AndroidManifest.xml 파일에 추가할 사항

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


전화번호 자동 읽어오기 코드

@SuppressLint("MissingPermission")
public String getPhoneNumber() {
    TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String phoneNumber = "";
    try {
        if (telephony.getLine1Number() != null) {
            phoneNumber = telephony.getLine1Number();
        } else {
            if (telephony.getSimSerialNumber() != null) {
                phoneNumber = telephony.getSimSerialNumber();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    if (phoneNumber.startsWith("+82")) {
        phoneNumber = phoneNumber.replace("+82", "0");
// +8210xxxxyyyy 로 시작되는 번호

    }
    //phoneNumber = phoneNumber.substring(phoneNumber.length()-10,phoneNumber.length());
    //phoneNumber="0"+phoneNumber;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        phoneNumber = PhoneNumberUtils.formatNumber(phoneNumber, Locale.getDefault().getCountry());
    } else {
        phoneNumber = PhoneNumberUtils.formatNumber(phoneNumber);
    }
    return phoneNumber;
}



2020.3.26 Update

코틀린에서 전화번호 읽어오는 함수로 변환했더니 아래와 같은 결과를 반환했다.

fun getPhoneNumber(): String {
    val telephony =
        getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
    var phoneNumber = ""
    try {
        if (ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.READ_SMS
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.READ_PHONE_NUMBERS
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                this,
                Manifest.permission.READ_PHONE_STATE
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            return ""
        }
        if (telephony.line1Number != null) {
            phoneNumber = telephony.line1Number
        } else {
            if (telephony.simSerialNumber != null) {
                phoneNumber = telephony.simSerialNumber
            }
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
    if (phoneNumber.startsWith("+82")) {
        phoneNumber = phoneNumber.replace("+82", "0")
    }
    phoneNumber = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        PhoneNumberUtils.formatNumber(
            phoneNumber,
            Locale.getDefault().country
        )
    } else {
        PhoneNumberUtils.formatNumber(phoneNumber)
    }
    return phoneNumber
}


블로그 이미지

Link2Me

,