Android 주소록 프로젝트
공통
manifests
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
만약
Permission exists without corresponding hardware <uses-feature android:name="android.hardware.telephony" required="false"> tag
이런 오류가 발생한다면 밑에 코드를 추가해줘야한다.
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
발생 원인 ?
전화 권한을 허용하고 있지만 해당 기능에 대한 하드웨어가 기기에 없기 때문에 발생한다.
앱이 전화 기능을 지원하지 않는 기기에서도 작동할 수 있도록 필요한 경우에따라 위에 코드를 추가한다.
전화걸기
private fun setUpCall() {
binding.ivCall.setOnClickListener {
binding.tvNumber.text = "01012345678" //<<전화번호 값 입력
val phoneNumber = binding.tvNumber.text
val callUriSwipedPerson = Uri.parse("tel:$phoneNumber")
// 권한 확인
if (ContextCompat.checkSelfPermission(
requireContext(),
Manifest.permission.CALL_PHONE
) != PackageManager.PERMISSION_GRANTED
) {
requestPermissions(
arrayOf(Manifest.permission.CALL_PHONE),
REQUEST_CALL_PERMISSION
) //todo deprecated 수정
} else {
startActivity(Intent(Intent.ACTION_CALL, callUriSwipedPerson))
}
}
}
문자 보내기
private fun setUpMessage() {
binding.ivMessage.setOnClickListener {
binding.tvNumber.text = "01012345678" //<<전화번호 값 입력
val phoneNumber = binding.tvNumber.text
val sendUriSwipedPerson = Uri.parse("smsto:$phoneNumber")
if (ContextCompat.checkSelfPermission(
requireContext(),
Manifest.permission.SEND_SMS
) != PackageManager.PERMISSION_GRANTED
) {
requestPermissions(arrayOf(Manifest.permission.SEND_SMS), REQUEST_CALL_PERMISSION) //todo deprecated 수정
} else {
startActivity(Intent(Intent.ACTION_SENDTO, sendUriSwipedPerson))
}
}
}
다음으로 이미지를 선택해서 받아와야한다.
이미지를 받는건 괜찮은데 권한에 대한 얘기가 없다..
기존코드는 어쩔 수 없이 권한이 없다면 dialog를 띄워 권한을 허용해주도록 설정하고 있는데 방법을 찾았다.
바로 photo picker이다.
android 9 /10을 기준으로 나뉘게 되는데
9이하의 경우에는 내부/외부 저장소 디렉터리를 하나로 통으로 관리하면서 개별적인 공간으로 나눠져있었다. 만약 통째로 권한이 있다면 권한을 다 가져올 수 있었다.
하지만
10이상으로 넘어오면서 보안이 되었다. 공용공간과 개별공간으로 나눠지는 건 똑같지만 미디어를 분리하기 시작했다. 예를 들어 사진, 비디오, 문서 등등..
그 나눠진 것들 안에도 개별 공간을 구분을 시작했다. 권한을 전부 뺐어가는 대신에 개별 공간에 접근하는 권한을 안줘도 되도록 수정되었다.
맞게 정리한지 모르겠다. 아직 공식문서에 있는 코드를 읽고 사용만 해본 상태이다. 더 정리해서 올릴 예정이다.
확실한건 Photo Picker를 사용할 것이다.
ref
'Kotlin > TIL' 카테고리의 다른 글
TIL (04.29) - LiveData 실습 (0) | 2024.04.29 |
---|---|
TIL (04.23) (0) | 2024.04.23 |
TIL(04.18) (1) | 2024.04.18 |
TIL (04.17) (0) | 2024.04.17 |
TIL (04.16) (0) | 2024.04.16 |