마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

permission 권한 획득에 대해 문의

0 추천
public class PermissionsActivity extends Activity{
    //Tag
    private static final String TAG = "PermissionsActivity";
    private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.CAMERA,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.SEND_SMS,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e(TAG, "+++ ON CREATE +++");
        setContentView(R.layout.permissionsactivity);

            //권한 설정
            if (ContextCompat.checkSelfPermission(PermissionsActivity.this,
                    Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
    
                // 권한 획득에 대한 설명 보여주기
                if (ActivityCompat.shouldShowRequestPermissionRationale(PermissionsActivity.this, Manifest.permission.SEND_SMS)) {
    
                    ActivityCompat.requestPermissions(PermissionsActivity.this,
                            PERMISSIONS_STORAGE,
                            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
                    // 사용자에게 권한 획득에 대한 설명을 보여준 후 권한 요청을 수행
    
                } else {
    
                    // 권한 획득의 필요성을 설명할 필요가 없을 때는 아래 코드를
                    //수행해서 권한 획득 여부를 요청한다.
    
                    ActivityCompat.requestPermissions(PermissionsActivity.this,
                            PERMISSIONS_STORAGE,
                            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    
                }
            }
    }
    
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
                //권한 획득이 거부되면 결과 배열은 비어있게 됨
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    //권한 획득이 허용되면 수행해야 할 작업이 표시됨
                    //일반적으로 작업을 처리할 메서드를 호출
                    Intent languageintent = new Intent(PermissionsActivity.this, LanguageActivity.class);
                    startActivity(languageintent);
                    finish();

                } else {
                    Toast.makeText(this, "You must to agree to the permissions", Toast.LENGTH_LONG).show();
                    finish();
                    //권한 획득이 거부되면 수행해야 할 적업이 표시됨
                    //일반적으로 작업을 처리할 메서드를 호출
                }
                return;
            }
        }
    }
}

 

위와 같이 예제 소스를 돌리고 있습니다.

권한 4가지 다 권한을 획득하지 않으면 앱이 종료되게 만들고 싶습니다.

4가지 권한을 다 받았는지 확인하는 방법도 알고 싶습니다..
쿠쿠부다스 (6,470 포인트) 님이 2017년 1월 26일 질문

2개의 답변

0 추천
 
채택된 답변

PackageManager.PERMISSION_GRANTED로 해당 권한들 비교해서  권한 하나라도 

PackageManager.PERMISSION_DENIED 면 종료하게 하면 안되나요 ?

CJ여비 (5,730 포인트) 님이 2017년 1월 26일 답변
쿠쿠부다스님이 2017년 1월 26일 채택됨
0 추천
쎄미 (162,410 포인트) 님이 2017년 1월 26일 답변
...