안녕하세요?


이번 포스팅에서는 처음에는 그냥 ACTION_DIAL이라는 인텐트(Intent)를 이용해서 단순히 전화를 걸기위한 화면으로 넘어가는 역할을 하는 앱을 실습해 보려고만 했습니다만, [Do it 안드로이드 앱 프로그래밍]이라는 책에서 언급하지 않은 부분이 있었기에, 이 문제까지 해결한다고 중간에 한번 짤라야 했습니다.


먼저 SampleCallIntent라는 이름으로 새 프로젝트를 생성해 주도록 합니다. 그리고 나서 먼저 아래의 스크린샷처럼 activity_main.xml을 제약 레이아웃에서 LinearLayout으로 바꾸어 주도록 합니다.



그리고 나서는 Text탭에서 나와서는 Design탭으로 가서 입력상자인 PlainText컴포넌트와 버튼 컴포넌트를 가져와서 아래의 스크린샷과 같이 추가를 하도록 합니다.



다음은 이제 MainActivity.java로 가서 코딩작업을 시작하도록 합니다.



먼저 입력상자를 지정하는 변수이름을 미리 광역변수로 선언해서, 앞으로 이어지는 코딩에서 불편함이 없도록 합니다.



다음은 버튼을 눌러졌을 때 해당하는 기능이 작동할 수 있도록 하기 위해서 onClick속성의 값을 넣어서, 아래와 같이 만들도록 합니다. 여기서는 다음과 같은 구조로 코딩이 되어 있습니다.


String 변수이름 = 앞서 선언한 입력상자를 지정하는 광역변수.getText().toString();


여기서 먼저 변수이름은 당연 앞으로 이어질 전화번호를 의미하는데, 문자열이 되기 때문에 String을 사용하였습니다. 그리고 이어지는 getText()는 앞에서 지정된 광역변수에서 텍스트를 취하라는 의미가 됩니다. 그리고 이어지는 toString()의 의미는, 앞서 getText()로 얻은 값은 문자열값인데, 이 문자열을 String형태로 변환하라는 명령어가 됩니다.


그리고 이어지는 Intent 변수이름2 = new Intent(Intent.ACTION_DIAL,Uri.parse(변수이름)); 이 구문은 바로 전화번호를 변수이름이라는 변수에서 가져오는 Intent인 변수이름2를 생성하라는 의미가 됩니다. 이 변수이름2 라는 변수가 생성되었다면, 이후에는 startActivity(변수이름2); 라는 구문으로 인텐트를 실행시키게 됩니다.



다만 문제가 이런식으로 완성해서 코딩을 하였을 경우, 실행이 되지 않는 문제점이 발생하였습니다. 처음에는 문제가 어디인지 몰라서 다음과 같이 코딩을 책에서 나온 것과 100% 똑같이 입력도 해 보았습니다.



하지만 여전히 문제는 해결이 되지 않았습니다. 그러던 중에 어디가 문제인지 짐작가는 곳이 한 군데 있기는 있었습니다. 일단 이 문제는 해결이 아직 되지 않아서 여기서 끊도록 하고, 다음 포스팅에서는 이 문제를 해결해서 글을 올리도록 해 보겠습니다. 아무래도 지난번 처럼 Call_phone권한을 획득해야 되는 문제라고 생각이 되는 중입니다.

+ Recent posts

티스토리 툴바