안드로이드도 권한 강화가 점점 됩니다.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_SMS" />
private void usimCheck() {
TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephonyManager == null) {
Toast.makeText(this, "전화번호를 가져올 수 없습니다.", Toast.LENGTH_LONG).show();
} else {
try {
int simState = mTelephonyManager.getSimState();
switch (simState) {
// 유심 상태를 알 수 없는 경우
case TelephonyManager.SIM_STATE_UNKNOWN:
// 유심이 없는 경우
case TelephonyManager.SIM_STATE_ABSENT:
// 유심 오류, 영구적인 사용 중지 상태
case TelephonyManager.SIM_STATE_PERM_DISABLED:
// 유심이 있지만 오류 상태인 경우
case TelephonyManager.SIM_STATE_CARD_IO_ERROR:
// 유심이 있지만 통신사 제한으로 사용 불가
case TelephonyManager.SIM_STATE_CARD_RESTRICTED:
Toast.makeText(this, "단말기의 유심이 존재하지 않거나 오류가 있는 경우, 앱을 사용할 수 없습니다.", Toast.LENGTH_LONG).show();
break;
default:
if ( ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED ) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
Toast.makeText(this, "전화번호를 가져오는 권한이 없습니다." + Build.VERSION_CODES.O, Toast.LENGTH_LONG).show();
// requestPermissions();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{ Manifest.permission.READ_PHONE_NUMBERS },
MY_PERMISSIONS_REQUEST_READ_PHONE_NUMBERS);
}
return;
} else {
TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Log.d(TAG, "phoneMgr.getLine1Number(): " + phoneMgr.getLine1Number());
}
break;
}
} catch (Exception e) {
Toast.makeText(this, "단말기의 정보를 가져오는 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.", Toast.LENGTH_LONG).show();
Log.e("simCheck", "Exception: " + e.toString());
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_PERMISSIONS_REQUEST_READ_PHONE_NUMBERS) {
if (grantResults.length > 0) {
for (int i = 0; i < grantResults.length; ++i) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
// 하나라도 거부한다면.
new AlertDialog.Builder(this).setTitle("알림").setMessage("권한을 허용해주셔야 앱을 이용할 수 있습니다.")
.setPositiveButton("종료", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
}).setNegativeButton("권한 설정", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.parse("package:" + getApplicationContext().getPackageName()));
getApplicationContext().startActivity(intent);
}
}).setCancelable(false).show();
return;
}
}
}
}
}
'Android' 카테고리의 다른 글
안드로이드 스크립트로 build 하여 git push 하기 (0) | 2021.12.26 |
---|---|
파일 저장하는 함수 (0) | 2021.09.20 |
안드로이드 웹뷰앱 앱에 WebView 및 제휴사 스팸 정책을 준수하지 않는 콘텐츠가 포함되어 있습니다. (0) | 2020.10.12 |
무통장 입금 자동 확인 SMS 안드로이드 앱 android & Firebase (0) | 2019.07.13 |
앱 실행시 키보드 감추기 EditText (0) | 2019.02.22 |
댓글