일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- as?
- node.js
- HP
- 리스트 뷰
- js
- 연산자
- 싱글 스레드
- Android
- Java
- var
- Overloading
- 안드로이드
- 파이썬
- javascript
- 오버로딩
- Python
- 코틀린
- 노트북 추천
- ListView
- 자바
- 자바스크립트
- 함수
- adapter
- Kotlin
- 배열
- golang
- Array
- 패널 교체
- go
- 노트북
- Today
- Total
Bbaktaeho
[Android] 권한의 유형과 권한 명세하기 (permission, AndroidManifest) 본문
[Android] 권한의 유형과 권한 명세하기 (permission, AndroidManifest)
Bbaktaeho 2020. 9. 4. 12:43안드로이드 권한 (Permission)
안드로이드 앱이 동작하면서 시스템의 특정 부분을 사용하려면 안드로이드로부터 권한을 위임받아야 합니다.
사용하려는 권한이 개인정보를 요청한다면 위험 권한으로 분류되고 그렇지 않은 권한은 일반 권한으로 분류됩니다. 위험 권한은 카메라, 위치 정보, 주소록 등이 있고, 일반 권한으로는 인터넷 접근 권한, 와이파이 접근 권한, 블루투스 접근 권한 등이 있습니다.
마지막으로 서명 권한이 있는데, 이 권한을 사용하려는 앱이 권한을 정의하는 앱과 동일한 인증서로 서명된 경우 자동으로 권한을 부여합니다.
일반 권한 (Normal Permission)
AndroidManifest.xml 파일에 <uses-permission /> 태그를 사용하여 권한을 입력하면 됩니다.
앱 설치 시 사용자에게 권한 승인을 묻는 팝업창을 띄워줍니다.
권한 | 내용 |
INTERNET | 인터넷 사용 권한 |
BLUETOOTH | 블루투스 상태 확인 |
VIBRATE | 진동 설정 권한 |
SET_ALARM | 알람 설정 권한 |
ACCESS_WIFI_STATE | 와이파이 상태 확인 |
등등... | ... |
인터넷 권한 사용
위험 권한 (Dangerous Permission)
위험 권한은 사용자의 개인정보, 다은 앱 및 기기의 작동에 영향을 줄 우려가 있는 권한입니다.
위험 권한은 사용자의 동의가 필요하므로 런타임 시 팝업창으로 동의를 받습니다. 단, 안드로이드 6 버전 이상부터 가능합니다.
https://bbaktaeho-95.tistory.com/51
6 버전 이면 API 레벨 23 이상으로 타깃을 잡아야지만 정상으로 동작합니다.
일반 권한처럼 AndroidManifest.xml 에 권한을 설정하지만 부가적인 코드 작성이 필요합니다.
권한 그룹
어떠한 파일에 읽기 또는 쓰기 권한이 있으면 이 권한들은 하나의 그룹으로 볼 수 있습니다.
같은 그룹에서 다른 권한이 이미 부여된 경우, 그룹에 속해있는 권한들까지 모두 허가합니다.
권한 그룹 | 권한 | 내용 |
CAMERA | CAMERA | 카메라 권한 |
CONTACTS | READ_CONTACTS | 주소록 읽기 |
WRITE_CONTACTS | 주소록 쓰기 | |
LOCATION | ACCESS_FINE_LOCATION | 위치 정보 사용 |
ACCESS_COARSE_LOCATION | 위치 정보 사용 | |
CALENDAR | READ_CALENDAR | 캘린더 읽기 |
WRITE_CALENDAR | 캘린더 쓰기 | |
등등... | ... | ... |
카메라 권한 사용
추가 로직 필요
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkPermission();
}
});
}
void checkPermission() {
int cameraPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA);
if(cameraPermission == PackageManager.PERMISSION_GRANTED) {
// 카메라 실행 로직
logic();
}else {
requestPermission();
}
}
void requestPermission() {
String[] permissions = {Manifest.permission.CAMERA};
ActivityCompat.requestPermissions(this, permissions, 321);
}
void logic() {
Toast.makeText(this, "카메라 실행", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 321) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 카메라 실행 로직
logic();
}else {
finish();
}
}
}
}
참고 자료
https://developer.android.com/guide/topics/permissions/overview?hl=ko
'개발 (Develop) > 안드로이드 (Android)' 카테고리의 다른 글
[Android] 기본적인 View 요소들과 역할 (0) | 2020.09.06 |
---|---|
[Android] 자기소개 앱 만들기 (안드로이드 기초, Splash) (0) | 2020.09.05 |
[Android] Java를 Kotlin 변환하기 (Convert Java Filie to Kotlin ) (0) | 2020.09.04 |
[Android] Click 이벤트로 Toast 생성하기 (setOnclickListener, makeToast) (0) | 2020.09.04 |
[Android] 안드로이드 버전의 변천사 (디저트, Android 10, Android 11) (0) | 2020.08.29 |