// MainActivity.java 의 onCreate() method
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
if(permissionCheck == PackageManager.PERMISSION_GRANTED)
Toast.makeText(this, "SMS 수신 권한 주어져 있음.", Toast.LENGTH_LONG).show();
else {
Toast.makeText(this, "SMS 수신 권한 없음.", Toast.LENGTH_LONG).show();
if(ActivityCompat.shouldShowRequestPermisssionRationale(this, Manifest.permission.RECEIVE_SMS)) {
Toast.makeText(this, "SMS 권한 설명 필요함.", Toast.LENGTH_LONG).show();
}
else {
// 시스템이 대화상자를 띄워서 사용자에게 권한요청을 한다.
ActivityCompat.requestPermission(this, new String[] {Manifest.permission.RECEIVE_SMS}, 1);
// 위 코드의 결과가 Toast메시지로써 보여질 수 있도록 콜백함수를 사용한다(onRequestPermissionsResult() override)
}
}
// override method 통해서 직접 오버라이딩 해준다.
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1:
if(grantResults.length > 0) {
if(grantResult[0] == PackageManager.PERMISSION_GRANTED)
Toast.makeText(this, "SMS 수신권한을 사용자가 승인함", Toast.LENGTH_LONG).show();
else if(grantResult[0] == PackageManager.PERMISSION_DENIED)
Toast.makeText(this, "SMS 수신권한을 사용자가 거부함", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "SMS 수신권한을 부여받지 못함", Toast.LENGTH_LONG).show();
}
}
}
}
위의 코드를 통하여, 어플 실행 시 사용자가 시스템으로부터 권한사용을 요청받는다.
targetSdk가 25, 26 이더라도 문제없이 실행되는 것을 확인할 수 있다.
'프로그래밍 > 안드로이드 앱 프로그래밍' 카테고리의 다른 글
[Android] ViewPager 화면 사라짐 현상 해결법! (1) | 2019.12.12 |
---|---|
[안드로이드] 브로드캐스트 리시버(Broadcast receiver) - 문자(SMS)메세지 이벤트처리 (0) | 2019.04.24 |
[안드로이드] Service 활용하기(백그라운드 실행) (2) | 2019.04.19 |
액티비티 수명주기 - SharedPreferences를 활용한 데이터 저장 및 복구(onPause/onResume) (0) | 2019.04.19 |
[Android] 버튼 선택여부에 따라 다른 drawable 설정, 이벤트 처리 (0) | 2019.02.08 |