IT정보공유/Android

[안드로이드 개발 요약 - 5] 스마트폰 전화번호 가져오기 (인터넷 소스 봐도 안될때 참고 하세요)

알지오™ 2017. 5. 28.

안드로이드 프로그래밍 공부 시작한지 몇일 안됐는데

뭔가 하려고만 하면 턱턱 막히는게 조금 짜증이 날려고 하네요.

 

이번에는 내 전화번호를 가져오는 아주 간단한 기능을 구현하려고 하는데 이것도 

역시나 인터넷으로 검색한 많은 소스들을 토대로 적용해봐도 안되네요.

 

아래 처럼 전화번호를 구해올 때는 TelephonyManager를 이용하며, 

getLine1Number() 함수를 이용하면 됩니다.

 

에뮬레이터나 전화번호가 없는, 즉 개통되지 않은 스마트폰에서는 고유의 기기 아이디값이 리턴됩니다.

 

  
        TelephonyManager mgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        try{
            userPhone = mgr.getLine1Number();//mgr.getLine1Number();
            userPhone = userPhone.replace("+82", "0");
            Toast.makeText(getApplicationContext(), userPhone, Toast.LENGTH_LONG).show();
        }catch(Exception e){
            //Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
        }

 

전화번호를 가져오기 위해서는 AndroidManifest.xml 파일에 권한을 설정해 주어야 합니다.

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

 

근데 이렇게 해줘도 전화번호를 못가져 오는 경우가 있습니다.

저도 정확한 원인은 모르지만 확인해야 할 것이 있습니다.

 

[안드로이드 개발 요약 - 5] 스마트폰 전화번호 가져오기 (인터넷 소스 봐도 안될때 참고 하세요)

 

app에서 마우스 오른쪽 버튼을 클릭하여 Open Module Settngs를 살펴보면

Complie Sdk Version이 API 23: Android 6.0 (Marshmallow) 가 선택되어 있으면

전화번호를 못가져오더라고요.

 

.

 

[안드로이드 개발 요약 - 5] 스마트폰 전화번호 가져오기 (인터넷 소스 봐도 안될때 참고 하세요)

 

참고로 에뮬레이터, 그리고 누가가 올라가 있느 S6에서도 전화번호를 못가져 왔습니다.

그래서 API 21인 안드로이드 5.0 롤리팝 버전으로 컴파일 SDK 버전을 낮춰 줬더니 

정상적으로 전화번호를 가져오더군요.

 

저처럼 안드로이드 스튜디오를 디폴트로 설치하고  안드로이드 6.0 머쉬멜로우 버전을

디폴트로 컴파일 하시는 분들은 참고하시기 바랍니다.

그 외에는 저도 초보라 잘 모르겠네요. 

 

댓글

💲 추천 글