1. 권한(Permissions)
- 안드로이드는 개인 정보, 센서, 카메라, 저장소 등 개인 정보와 관련된 기능을 사용하기 위해서 권한을 등록해야 한다.
- 권한 등록은 사용자가 애플리케이션을 다운로드 받거나 설치하면 애플리케이션 정보에서 확인이 가능하다.
- 권한 등록의 목적은 사용자에게 애플리케이션이 어떠한 기능을 사용하는지 알려주는 목적으로 사용한다.
- 권한 등록을 필요로 하는 기능을 사용할 때 권한을 등록하지 않으면 오류가 발생하여 개발자는 반드시 권한을 등록해야 하고 등록된 권한은 사용자에게 고지된다.
- 안드로이드 마시멜로우 버전부터 개인 정보와 관련된 권한은 애플리케이션 내부에서 고지하고 사용 허가를 맡도록 변경되었다.
- 권한 사용 시 반드시 사용자에게 고지하고 이를 승인 받는 작업이 필요하다.
- 애플리케이션 내부에서 권한 사용을 고지하고 사용 허가를 받아야 하는 권한 목록
https://developer.android.com/training/permissions/requesting
2. 권한 등록
- AndroidManifest.xml에서 권한 등록 가능
....
<uses-permission android:name="android.permission.INTERNET" />0
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
</manifest>
3. 권한 등록 승인 요청 메세지 띄우기
- AndroidManifest.xml에 있는 모든 권한에 승인 요청을 띄울 필요는 없고, 요청을 받아야하는 권한에만 띄운다.
1. 배열에 넣기.
// 1. 등록한 권한들 중에서 확인이 필요한 권한들만 목록으로 코드로 짜주면 된다.
var permission_list = arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_CONTACTS,
Manifest.permission.RECEIVE_SMS,
Manifest.permission.SEND_SMS
)
2. 권한 확인(안드로이드 마쉬멜로우 이상 버전에서부터만 확인한다.)
// 2. 권한 확인(안드로이드 마쉬멜로우 이상 버전에서부터만 검사한다)
fun checkPermission(){
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
{
return
}
else
{
// Kotlin에서의 for문은 배열을 도는 용도.
for(permission : String in permission_list)
{
// 권한 허용했는지 묻는 용도(INT)
var chk = checkCallingOrSelfPermission(permission)
// 만일 거절했었다면,
if(chk == PackageManager.PERMISSION_DENIED)
{
// 권한 승인 요청
requestPermissions(permission_list, 0)
break
}
}
}
}
3. 앱 실행될 때 함수 호출.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkPermission()
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - Handler를 이용한 반복 작업 (0) | 2020.02.17 |
---|---|
안드로이드 - 쓰레드 (0) | 2020.02.14 |
안드로이드 - Style Notification (0) | 2020.02.14 |
안드로이드 - Pending Intent (0) | 2020.02.14 |
안드로이드 - Notification (0) | 2020.02.14 |