안녕하세요?


지난번 포스팅에 이어서 계속해서 인텐트의 ACTION_DIAL을 구현하고자 애를 먹었습니다만, 뚜렷한 해결책이 없기는 없었습니다.


그러던 와중에 자료를 조사해 보니, 한가지 알게된 사실이 있었습니다. 다른 사람이 ACTION_DIAL을 해 놓은 코드를 보니까 따로 권한을 획득하지 않고서 다음과 같이 인텐트를 그냥 실행시키는 사례를 보았습니다.


public void onClick(View v) {

Intent 변수이름 = new Intent(Intent.ACTION_DIAL,Uri.parse(전화번호);

startActivity(변수이름);

}


여기서 저는 전화를 바로 거는 기능과는 달리, 그냥 전화걸기 액티비티에 특정 전화번호를 띄우는 행동은 위험한 권한이 아닌 정상권한이며, 따라서 따로 권한을 획득하기 위한 코드가 필요한 것이 아니라는 것을 알 수 있었습니다. 그리고 책에서 나온 (View view)가 잘못되었다고 생각을 해서 아래와 같이 코드를 변경하였습니다.



위에 올려져 있는 스크린샷과 같이 MainActivity.java의 내용을 변경하였습니다만, 문제는 해결되지 않았고 여전히 앱은 버튼을 누르자마자 그대로 종료되어 버렸습니다. 그러던 중에 네이버 안드로이드 개발자 커뮤니티라는 카페에서 올린 질문글에서 해결책을 하나 제시해 준 것이 있어서, 그걸 참조해서 코드를 아래의 스크린샷과 같이 변경하였습니다.



원래는 전화번호를 가져 오기만 하는 부분에 phonenumber라는 변수만 있었습니다. 하지만 해결책은 이 부분의 앞에다가 "tel:"+를 붙여서 코딩을 해 보라는 것이였습니다.


그래서 저는 코딩을 이번에는 그냥 phonenumber라는 변수이름만 적는 것이 아니고, 다음과 같이 코딩을 하였습니다.


Intent calling = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+phonenumber));



그 결과 옆의 스크린샷처럼 의도대로 앱의 액티비티에서 전화걸기 앱의 전화번호를 입력하는 곳에다가 제가 의도한 번호가 뜨는 것을 확인할 수 있었습니다.


이래저래 많이 헤멘것이 사실인 듯 하지만, 아무튼 이제라도 해답을 찾은 것이 다행이라는 생각이 듭니다. 처음에 같은 전화걸기라고 해서 위험한 권한인가 싶어서 2일은 그냥 허비하고 말았다는 생각이 듭니다만, 이것도 해봐야 느는 것이 아닌가 하는 생각이 듭니다.


아무튼 예상치 못한 암초를 만나서 많이 지체가 되기는 했지만, 그래도 안드로이드 스튜디오에 대한 독학은 계속해서 이어나갈 계획입니다. 이렇게 말은 하였지만, 앞으로 또 어떤 암초를 만나게 될지 모르겠다는 생각이 듭니다. 



+ Recent posts

티스토리 툴바