Permission을 결과를 처리하는 곳이 안보이네요.
개발자 문서를 읽어보시고 permission 결과를 처리하는 코드를 넣으세요.
https://developer.android.com/training/permissions/requesting
// Register the permissions callback, which handles the user's response to the
// system permissions dialog. Save the return value, an instance of
// ActivityResultLauncher, as an instance variable.
private ActivityResultLauncher<String> requestPermissionLauncher =
registerForActivityResult(new RequestPermission(), isGranted -> {
if (isGranted) {
displayPhoneNumber();
} else {
// 퍼미션이 거절당했을 때의 처리. 보통은 퍼미션이 왜 필요한지에 메세지를 보여준다.
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtPhoneNo = (TextView)findViewById(R.id.txtPhoneNo);
checkPhoneNumberPermission();
}
private void checkPhoneNumberPermission() {
boolean permissionGranted = if (ContextCompat.checkSelfPermission(
CONTEXT, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED);
if (permissionGranted()) {
displayPhoneNumber();
return
}
// 사용자가 퍼미션을 이미 한번 거절했을 때의 처리. 예를 들면, 권한이 왜 꼭 필요한지 대한 메세지를 보여줌
boolean permissionDenidedOnce = ActivityCompat.shouldShowRequestPermissionRationale(permission.READ_PHONE_STATE);
if (permissionDenidedOnce) {
doSomething();
return
}
requestPermissionLauncher.launch(Manifest.permission.READ_PHONE_STATE);
}
private void displayPhoneNumber() {
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
// 통신사 전화번호 구하기
txtPhoneNo.setText("전화번호"+ telephonyManager.getLine1Number().replace("-", "").replace("+82", "0"));
}
기본적으로는 위처럼 처리하면 되는데, 퍼미션 핸들링 자체가 간단하지는 않으므로 제 코드는 참조만 하시고 님의 요구사항에 맞게 작업을 하신다음, 여러가지 경우를 테스트 해보시길 권장합니다.