본문 바로가기
일상생활 이야기/안드로이드 스튜디오 독학하기

안드로이드 스튜디오 독학하기 18.5일째

by 인터넷떠돌이 2017. 3. 4.
반응형

안녕하세요?


지난번 포스팅에서 위험한 권한 획득을 위한 과정에서 무언가 개선을 한다고 말을 하기는 했는데, 이번 포스팅에서 올리는 내용은 그다지 만족스럽지는 않은 내용을 올리게 되었습니다. 완전히 문제를 해결한 것은 아니기는 하지만, 그래도 여기까지 진행한 진행사항을 올리고자 합니다.


우선 지난 시간에 ActivityCompat.requestPermissions 라는 메서드를 사용해서 권한을 요청해서, 전화걸기 기능을 구현한 것 까지는 포스팅을 했습니다.


그런데 이 결과를 가져오는 메서드가 onRequestPermissionsResult라는 메서드인데, 이 메서드의 적용을 두고서 상당히 힘들고 골치가 아팠습니다. 우선 대다수의 인터넷에 있는 자료들을 보면, 대체로 이런 식으로 구성이 되어 있을 것입니다.


onRequestPermissionsResult(int requestcode, String[] permissions, int[] grantresults)


이런 식으로 되어 있는데, 여기서 이것들이 무슨 의미인지 몰라서 상당히 오랜 시간 헤메기는 헤메었습니다. 일단 여기서 int requestcode를 이해하기 위해서는 ActivityCompat.requestPermissions라는 메서드를 봐야만 했습니다.


ActivityCompat.requestPermission(mainActivity, new String[]{Manifest.permission.CALL_PHONE},1000);


지난 시간에 분명히 이런 식으로 코딩을 했는데, 여기서 마지막에 들어간 1000이라는 숫자가 바로 int requestcode라는 것이였습니다. 그래서 다음과 같이 입력을 하기로 했습니다.


ActivityCompat.requestPermission(mainActivity, new String[]{Manifest.permission.CALL_PHONE},1000);


onRequestPermissionsResult(1000, String[] permissions, int[] grantresults)


이렇게 1000을 입력하고 난 다음에는 다음 문제는 String[] permissions가 무엇인가 하는 것인데, 이 역시 ActivityCompat.requestPermission안에 들어가 있긴 있는 것이였습니다.


new String[] {Manifest.permission.CALL_PHONE} 이라는 항목이 있는데, 바로 여기 안에 있는 Manifest.permission.CALL_PHONE이라는 항목이 들어가면 되는 것으로 생각이 되었습니다.


ActivityCompat.requestPermission(mainActivity, new String[]{Manifest.permission.CALL_PHONE},1000);


onRequestPermissionsResult(1000, Manifest.permission.CALL_PHONE, int[] grantresults)


이렇게 입력을 하면 되기는 되었습니다만, 문제는 int[] grantresults가 무엇인지 도저히 알 수가 없었고, 이 문제를 도저히 해결할 수 없었습니다. 그래서 책에서 있는 그대로를 조금만 변형시켜서 사용을 하였습니다만, 세세한 부분에서 아래와 같은 에러가 생겨서 도저히 진행을 할 수 없었습니다.



계속해서 세세한 부분에서 빨간색 줄이 생겨서 도저히 어떻게 할 수 없는 상황이 되었습니다. 이 문제를 해결해서 다음 포스팅에 올리는 것이 과제가 되었습니다.






반응형