티스토리 뷰

Android

[Android] 위험 권한 부여 하기

감자형 2017. 9. 24. 01:18
  • 일반 권한과 위험 권한
1
2
3
4
5
6
7
8
1. 위험 권한은 실행시 권한 부여
특정 권한은 메니페스트에 등록
 
2. 마쉬멜로우 버전부터 ~를 허용할까요? 라는식으로 위험 권한을 띄워준다.
 
3. 이 권한을 띄워주는것을 해보도록 하자. (마쉬멜로우 이후 부터)
대표적인 위험 권한들
- 위치 , 카메라, 마이크, 연락처, 전화 ,문자, 일정, 센서
cs
  • 위험 권한 부여 예제)
1.Main.Java파일에서 실습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.example.example_smsreceiver;
 
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);
 
        // 권한 처리 관련 부분
        // 권한 O 경우
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
        if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this"SMS 수신권한 주어져있음", Toast.LENGTH_LONG).show();
 
        } else {          // 권한 X 경우
            Toast.makeText(this"SMS 수신권한 없음", Toast.LENGTH_LONG).show();
 
            //권한 설명이 필요한지 안필요한지 여부
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECEIVE_SMS)) {//
                Toast.makeText(this"SMS 권한 설명 필요함", Toast.LENGTH_LONG).show();
                //권한은 시스템에서 처리 한다 이것을 시스템에 요청해야함
            } else {
                ActivityCompat.requestPermissions(thisnew String[]{
                        Manifest.permission.RECEIVE_SMS         //권한 부여를 시스템에게 요청한다.
                }, 1);
            }
        }
    }
 
        // 권한을 받으면 우리쪽으로 알려줘야 한다 이때, callback 함수 사용
        //generate -> override -> onRequestPermissionResult메소드 사용
 
 
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 
            switch (requestCode){
                case 1:
                    if(grantResults.length > 0){
                        if(grantResults[0== PackageManager.PERMISSION_GRANTED){
                            Toast.makeText(this,"SMS 수신권한을 사용자가 승인함.",Toast.LENGTH_LONG).show();
 
                        }else if(grantResults[0== PackageManager.PERMISSION_DENIED){
                            Toast.makeText(this,"SMS 수신권한을 사용자가 거부함",Toast.LENGTH_LONG).show();
 
                        }else{
                            Toast.makeText(this,"SMS 수신 권한을 부여 받지 못함",Toast.LENGTH_LONG).show();
                        }
                    }
            }
        }
}
cs

2. Permission 단말에서 SMS 허용불가로 바꾸어 주어야만 SMS 권한 확인을 할 수 있다.

3. 혹시 제대로된 값이 나오지 않는다면, Gradle Script에서 TargetSdkVersion을 25로 바꾸어 준다음에 실행 해본다.

4. 실행 결과






공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함