@Override
public
void
onRequestPermissionsResult(
int
requestCode,
@NonNull
String[] permissions,
@NonNull
int
[] grantResults) {
super
.onRequestPermissionsResult(requestCode, permissions, grantResults);
if
(requestCode != PERMISSIONS_REQUEST_CODE)
return
;
if
(permissionsGranted()) {
displayPhoneNumber();
return
;
}
showPermissionsRequiredDilog();
}
}
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView txtTest = findViewById(R.id.txtPhoneNo);
txtTest.setText(TAG);
handlePermissions();
}
private
void
handlePermissions() {
if
(sdkDoesNotRequiredPermissions() || permissionsGranted()) {
displayPhoneNumber();
return
;
}
if
(onceDeniedPermissionExists()) {
showPermissionsRequiredDialog();
return
;
}
requestPermissions();
}
private
boolean
sdkDoesNotRequiredPermissions() {
return
Build.VERSION.SDK_INT< Build.VERSION_CODES.R;
}
private
boolean
permissionsGranted() {
for
(permission : mRequiredPermissions) {
if
(ActivityCompat.checkSelfPermission(
this
, permission) != PackageManager.PERMISSION_GRANTED) {
return
false
;
}
}
return
true
;
}
private
boolean
onceDeniedPermissionExists() {
for
(permission : mRequiredPermissions) {
if
(ActivityCompat.shouldShowRequestPermissionRationale(
this
, permission)) {
return
true
;
}
}
return
false
;
}
private
void
displayPhoneNumber() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
txtTest.setText(tm.getLine1Number());
}
private
void
showPermissionsRequiredDialog() {
}
private
void
requestPermissions() {
ActivityCompat.requestPermissions(MainActivity.
this
, mRequiredPermissions, PERMISSIONS_REQUEST_CODE);
}