일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jquery
- 자바스크립트
- 주식
- 제이쿼리
- Oracle
- 7월 공모주 청약 일정
- JavaScript
- Eclipse
- linux
- 오라클
- css
- 공모주 청약
- 자바
- Stock ipo
- SQL
- html
- IPO
- 코드이그나이터
- 공모주 청약 일정
- php
- Stock
- java
- 주식 청약 일정
- MYSQL
- 주식 청약
- 맥
- 공모주
- codeigniter
- 6월 공모주 청약 일정
- 리눅스
- Today
- Total
개발자의 끄적끄적
[안드로이드/Android] 권한 체크하기 [펌] 본문
[안드로이드/Android] 권한 체크하기 [펌]
안녕하세요. 오늘은 권한(Permission)에 관한 포스팅입니다. 권한은 앱에서 사용자 기기에 접근하여 사용자의 정보를 얻기 위해 얻는걸 말합니다.
마시멜로 이전 버전에서는 사용자가 인지하지 못한 상태에서 권한을 허용해서 사용자들의 개인정보가 유출되는 사고가 있었는데 그것을 보완하고자 개인정보 유출등의 우려가 있는 권한들을 위험권한으로 분류하고 사용자로부터 동의를 얻도록 변경되었습니다.
권한 설정
권한을 AndroidManifest.xml에 명시해야 앱에서 권한을 요청 및 사용할 수 있습니다.
<manifest>
...
<uses-permission android:name="android.permission.CAMERA" />
<applcation
...
/applcation>
</manifest>
권한 체크
권한이 허용되지 않았는데 권한을 사용하면 에러가 발생하기 때문에 사용하기전 권한이 허용 유무를 체크해서 에러가 발생하지 않도록 유도해야 합니다.
int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
if(permission == PackageManager.PERMISSION_DENIED){
// 권한 없어서 요청
}else{
// 권한 있음
startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),REQ_IMAGE_CAPTURE)
}
카메라를 실행시키기 전에 권한을 체크해서 허용한 경우만 실행시키는 코드 입니다.
권한 요청
권한을 요청할땐 한개가 아닌 다수의 권한도 요청 가능합니다. 요청한 권한 피드백을 받기위해 request_code를 추가합니다.
int REQ_CAMERA_PERMISSION = 1001;
...
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.CAMERA},REQ_CAMERA_PERMISSION);
권한 요청 결과
동의 했을 경우와 거부 했을 경우를 앱의 정책에 따라 구현합니다.
ex ) 동의했을 경우 : 카메라 실행 , 거부 했을 경우 : 토스트로 동의 필요 알림
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case REQUEST_PERMISSION_CODE:
if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
//동의 했을 경우
.....
}else{
//거부했을 경우
Toast toast=Toast.makeText(this,"기능 사용을 위한 권한 동의가 필요합니다.", Toast.LENGTH_SHORT);
toast.show();
}
break;
}
}
권한이 필요한 이유 설명
권한에 대해 거부감을 갖고 있는 유저들에게 권한이 필요한 이유를 설명함으로써 조금 더 원활하게 권한 동의를 얻습니다.
if(ActivityCompat.shouldShowRequestPermissionRationale(this
,Manifest.permission.CAMERA)){
}
true 일 경우
- 사용자가 이전 요청에서 거부했을 경우
false 일 경우
- 사용자가 이전 요청에서 동의했을 경우
- '다시 묻지 않기' 체크 후 거부했을 경우
- 사용자 기기에서 해당 권한에 대해 거부했을 경우
다음은 해당 포스팅의 예제 소스 입니다.
위험 권한 목록
CALENDAR
CAMREA
CONTATTS
MICROPHONE
PHONE
SENSORS
SMS
STORAGE
|
출처: https://superwony.tistory.com/28 [개발자 키우기]
'개발 > android & ios' 카테고리의 다른 글
[android] Dangerous Permission (0) | 2020.07.19 |
---|---|
[android] 안드로이드 - UsageStatsManager로 앱 실행 기록 가져오는 방법 (0) | 2020.07.19 |
Android 9.0이상에서 foreground service 퍼미션 (0) | 2020.07.09 |
[Android] WebView에서 Javascript Alert 창이 보이지 않을 때 (0) | 2020.07.07 |
[Android] 안드로이드_단말기(디바이스) 정보 가져오기(TelephonyManager ) [펌] (0) | 2020.07.06 |