전화 걸게 하는 기능 만들기
AndroidManifest.xml 에 다음 코드를 추가
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
// 이건 전화 버튼 눌렀을 때, 메세지 버튼 눌렀을 때 기능 세팅하는 부분
// 권한이 허용 안 되어 있으면 if문이, 허용되어 있으면 else문을 실행한다.
binding.callPhone.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.CALL_PHONE), REQUEST_PHONE_CALL)
} else {
startCall(phoneNumber)
}
}
binding.messageButton.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.SEND_SMS), REQUEST_MESSAGE)
} else {
startMessage(phoneNumber)
}
}
// 위의 코드에서 권한이 허용 안 되어 있으면 자동으로 여기로 넘어온다.
// onRequestPermissionsResult를 실행하고 권한 허용 여부에 따라 각각에 맞는 코드를 실행한다.
private fun startCall(phoneNumber: String?) {
val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:$phoneNumber"))
startActivity(intent)
}
private fun startMessage(phoneNumber: String?) {
val uri = Uri.parse("smsto: $phoneNumber")
val intent = Intent(Intent.ACTION_VIEW, uri)
intent.putExtra("sms_body", "안녕하세요!")
startActivity(intent)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when (requestCode) {
REQUEST_PHONE_CALL -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startCall(phoneNumber)
} else {
Toast.makeText(this, "권한이 허용되지 않았습니다. 권한을 허용해야 전화를 걸 수 있습니다.", Toast.LENGTH_SHORT).show()
}
}
REQUEST_MESSAGE -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startMessage(phoneNumber)
} else {
Toast.makeText(this, "권한이 허용되지 않았습니다. 권한을 허용해야 메세지를 보낼 수 있습니다.", Toast.LENGTH_SHORT).show()
}
}
}
}