로그인한 폰의 전화번호를 자동으로 인식하여 가져오는 코드다.
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 }
|