2011-02-27 10 views
29

안드로이드 장치의 전화 번호를 받고 싶습니다. 이 코드를 사용합니다 :TelephonyManager.getLine1Number()가 실패 했습니까?

TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
String phoneNumber= tm.getLine1Number(); 

내 전화에서 (HTC Wildfire) 전화 번호를받을 수 없습니다. 에뮬레이터에서 코드를 실행하면 일반적으로 전화 번호가 표시됩니다.

설정 => 전화 정보 => 전화 신원 -> 전화 번호로 이동하면 전화 번호는 "알 수 없음"입니다.

어디에 문제가 있습니까? 내 SIM에 문제가 있습니까?

+1

실제 전화에서 전화 번호가 "알 수 없음"이라고 표시되어 있습니까? –

+4

나는이 일로 신음을받을거야.하지만 전화 번호를 알아 내는데 문제가있는 사람은 전부 아니야? : D 죄송합니다. 끝내야했습니다. 하지만 심의에 문제가 있다고 생각하지는 않습니다. 서비스 제공 업체가 정품 인증 중에 전화 번호를 지정하지 않았을 수 있습니다. – Sumit

답변

34

우리 프로젝트에서도 같은 문제가있었습니다. 결론은 SIM 카드에 달려 있다는 것이 었습니다. 우리에게 무슨 일이 있었는지

:

  • 갤럭시 S와 & T SIM 카드 AT : 전화 번호를 읽을 수있는 설정은 유럽 SIM 카드 번호
  • 같은 갤럭시를 보여줍니다 : 알 수없는 숫자와 "를 읽을 수 없습니다 "설정에서 (휴대 전화가 완벽하게 작동하여 숫자를 읽을 수 없음)

이 문제는 다른 포럼에서도보고되었습니다.

결국 우리는 사용자에게 전화 번호를 물어보기로 결정했습니다. 조금 더 복잡하지만 실제로는 if("SIM card present" && "cannot read the cell number") "ask user";입니다. 그렇지 않으면 우리는 처음에 SIM 카드가 아닌 사용자를 도청 할 것입니다.

+0

getLine1Number()는 SIM 카드에 저장된 번호 만 가져옵니다. 많은 연산자가 sim 번호를 쓰지 않습니다. 일부 휴대 전화 (노키아, 블랙 베리, 일부 노인 안드로이드, 아이폰)에서는 휴대 전화 번호를 직접 설정할 수 있습니다. 전화가 SIM 카드에 저장되면 getLine1Number()는 전화 번호를 반환합니다. – andQlimax

+0

@andQlimax 어떻게 그럴 수 있습니까? –

+0

@ShobhitPuri sim에 번호를 저장하는 것은 전화와 안드로이드 버전에서 다릅니다. 일부 안드로이드 전화에는 "전화 설정 -> 추가 설정 -> 전화 번호"옵션이 있습니다. 전화 번호를 설정할 수 있습니다. . API를 호출하여이 작업을 수행 할 수는 없습니다. 시스템 레벨 옵션입니다. – andQlimax

5

SIM 카드는 전화 번호를 저장하며 사용자가 편집 할 수 있습니다. Cant는 Android에 대해 말하지만 WM에서는 SIM 카드에 저장되어있는 전화 번호를 쉽게 수정할 수 있습니다. 물론, 전화 번호를 즉시 변경할 수 있다는 의미는 아닙니다. 실제로, 당신은 당신이 좋아하는 번호를 자유롭게 쓸 수 있으며, 프로그램은 당신의 실제 번호라고 믿을 것입니다. :)

+3

도 일부 사람 -1이 맞습니다. – andQlimax

+1

@trashkalmar : 어떻게 그렇게 할 수 있습니까? 비 뿌리 전화에서도 가능합니까? 나는 그것이 전화의 응원과 아무런 관련이 없다고 추정합니까? –

+1

Android에서 가능하다는 것은 확실하지 않지만 Windows Mobile에서이 작업을 수행했습니다. 어쩌면 일부 AT 명령이있을 수 있습니다. – trashkalmar

2

나는 SIM 카드를 새 전화기로 옮겼습니다. 설정 -> 전화 정보 -> 상태 -> 내 전화 번호에는 전화 번호가 표시되지 않습니다.

내 데이터 포인트 : & T ATRIX AT

  • 는 완전히 새로운 SIM을 넣어 "음성 MSISDN 호선 널 (null)"는 말했다.
  • T-Mobile G1에 새 SIM 카드를 넣으면 전화 번호가 올바르게 표시됩니다.
  • T-Mobile G2가 이전 G1의 SIM 카드를 "알 수 없음"이라고 말합니다.
0

SIM 카드가 있으면 전화 번호를 사용할 수 있습니다. 저희 회사에서는 하나의 SIM 만 발견했습니다. 번호는 허용됩니다. 나는 모든 안드로이드 장치에이 SIM을 tetsting 해요. 다 괜찮아. getLine1Number()는 괜찮습니다. 이제 다른 SIM의 전화 번호를 얻으려고합니다. 우리 SMS 서버 또는 다른 안드로이드 장치에 SMS를 보내십시오 (SMS 처리)

11

전화 번호 대신 항상 존재하며 항상 유효한 값인 SIM 카드 일련 번호를 사용하십시오.

telephonyManager.getSimSerialNumber(); 

SIM 일련 번호는 운영자가 고유해야합니다.따라서

telephonyManager.getNetworkOperator(); 

과 결합하면 국가 내의 구독자에 대한 고유 식별자를 갖게됩니다.

이는

telephonyManager.getNetworkCountryIso(); 

당신은 가입자에 대한 글로벌 고유 식별자를해야와 함께.

희망이 도움이 될 것입니다.

건배.

+1

사용자가 SIM 카드를 가지고 있지 않거나 여러 개의 SIM 카드를 가지고 있다면? – bitek

+0

그러면 분명히이 방법은 작동하지 않습니다. 어떤 이유에서든 SIM (예 : 대부분의 태블릿)이없는 기기에 앱을 만들려는 경우 앱에 다른 고유 식별자를 찾아야합니다. TelephonyManager는 여러 개의 SIM을 처리합니다. –

0

데이터 전송 만 허용하는 SIM 카드를 사용합니다. 전화 통화를 허용하지 않습니다.

getLine1Number()으로 phonenumber를 얻으려고하면 빈 문자열이납니다.

관련 문제