마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

갤럭시 S3 TelephonyManager null 관련 질문

0 추천

안녕하세요.

앱을 개발하던 도중 갤럭시 s3 이용자분께 오류를 보고받아서 이에 대한 피드를 받고 싶어서 글을 올려봅니다.

해당 앱은 전화번호를 가져와서 이용하는데요.

READ PHONE STATE 권한 체크 및 유심 상태를 체크 후 전화번호를 저장하여 로직을 실행하는 부분입니다만..

이상하게도 보고를 보낸 S3의 이용자분은 제가 따로 분기로 둔 telephonymanager의 null 체크에 걸려 앱 접속이 안된다는 군요..

초기화를 이상하게 했나싶어 살펴보니 초기화 되어있는 상태구요.

oncreate 내부

mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

어디서 뭐가 잘못됬는지 문제를 못찾겠습니다.

해당 기기의 이슈인가 싶어서 해외 사례에서 살펴보니 저와 비슷한 상황에 있는 사람들이 있지만 이미 몇년전 자료라서 이렇다할 명쾌한 답변을 얻지 못했구요..

많은 도움을 바라며 소스를 첨부해드리겠습니다.

//여기서 null로 체크되어 eles로 빠져나감
if(mTelephonyManager != null) {
	if (mTelephonyManager.getSimState() == TelephonyManager.SIM_STATE_ABSENT 
		|| mTelephonyManager.getSimState() == TelephonyManager.SIM_STATE_UNKNOWN) {
		// 유심이 없는 경우
		numFlag = false;
		finish();
	} else if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
				!= PackageManager.PERMISSION_GRANTED) {
		//권한 체크
		numFlag = false;
		finish();
	} else {
		// 유심이 존재하는 경우 && 저장된 번호가 없는 경우(초기화 상태)
		// 데이터 로직 보안 문제로 sharedPre....로 대체 테스트
		if (TextUtils.isEmpty(SharedUtil.getInstance().getString(this, "phoneNumber"))) {
			phoneNumber = mTelephonyManager.getLine1Number();
			phoneNumber = phoneNumber.replace("+82", "0");
		} else {
			// 저장된 번호가 있는 경우 데이터 저장
		}
	}
}else{
	Toast.makeText(SmartIdActivity.this, "전화번호를 저장할 수 없습니다.", Toast.LENGTH_LONG).show();
	finish();
}
익명사용자 님이 2019년 2월 18일 질문
2019년 2월 18일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...