오늘은 숙련 팀 프로젝트 첫 날이다.

오늘부터 만들 앱은 연락처 앱 만들기

오늘 배운 것은 전화를 거는 기능을 만들 때 (왜 그런 건지는 모르지만) 권한을 추가해주어야 한다는 것이다.

나에게 도움을 주신 분의 블로그 링크를 감히 가져와 봤다

전화를 거는 기능을 만들 때 일정 버전 이상부터는 권한을 허용해주어야만 전화 앱으로 암시적 인텐트 이동이 가능해진다.

그래서 그걸 설정하기 위해서는

Manifest 설정

Manifest에 다음과 같은 한 줄을 적어주어야 한다.

<uses-permission android:name="android.permission.CALL_PHONE"/>

이렇게 적어주고 나서
swipe할 때 권한 허용 여부를 물어보게 설정

override fun onItemSwipe(position: Int) {
// 권한이 허용되었으면, 암시적 인텐트로 전화 앱으로 지정한 전화번호 들고 이동해서 전화 걸기
// (전화 앱으로 이동만 하려면 ACTION_DIAL 쓰면  된다)
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:010-1234-5678"))
        startActivity(intent)
        adapter.notifyItemChanged(position)     // 스와이프 하고 리스트를 그대로 유지해야 하기에...
    } else {
        ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CALL_PHONE), CALL)
        adapter.notifyItemChanged(position)
    }
}

// 권한이 허용되었는지, 안 되었는지에 대한 설정이라고 하는데... 잘 모르겠다....

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if (requestCode == CALL) {      // 이거는 뭔지 모르겠다.
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {   // 권한이 허용되었으면
            Toast.makeText(this, "권한이 허용되었습니다.", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(this, "권한이 허용되지 않았습니다. 권한을 허용해야 전화를 걸 수 있습니다.", Toast.LENGTH_SHORT).show()
        }
    }
}

지난번 숙련 개인 과제 코드 정리

깃허브 링크

profile
김성진의 개발 관련 내용 정리 블로그

0개의 댓글