안드로이드에서 마시멜로우 이상 버전에서 관리하고 있는 위험 권한에 대한 셈플이다.

앱이 실행될때 권한여부를 체크 한 뒤 권한이 없을 경우에 권한을 부여받을 수 있도록 Alert 창을 띄워준다.

 

 

# MainActivity.java

package com.example.wookoa.wookoa_10;

import android.Manifest;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@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 Permission Granted", Toast.LENGTH_LONG).show();
} else if(permissionCheck == PackageManager.PERMISSION_DENIED){
Toast.makeText(this, "SMS Permission Denied", Toast.LENGTH_LONG).show();

// 권한이 없으면 권한을 부여
if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECEIVE_SMS)){
Toast.makeText(this, "권한에 대한 설명이 필요", Toast.LENGTH_LONG).show();
} else{
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.RECEIVE_SMS}, 1); //requestCode(1)
}
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if (grantResults.length > 0 ){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "사용자가 SMS 수신 권한을 승인", Toast.LENGTH_SHORT).show();
} else if(grantResults[0] == PackageManager.PERMISSION_DENIED){
Toast.makeText(this, "사용자가 SMS 수신 권한을 거부", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "사용자가 SMS 수신 권한을 거부", Toast.LENGTH_LONG).show();
}
}
}
}

 

 

 

Private comment