Activity란?

안드로이드의 4대 컴포넌트 (Activity, Serivce, Broadcast Receiver, Content Provider) 중 하나로

어플리케이션이 실행되었을 때 보여지는 화면을 구성하는 역활을 한다.

 

 

 

엑티비티는 다음과 같은 생명주기를 가진다. 어플리케이션이 시작되면 가장 먼저 onCreate()가 호출이 되며,

onCreate() 이전에 추가하는 경우 표시되지 않거나 오류가 발생하는 걸 확인할 수 있을 것이다.

 

하지만 하나의 엑티비티 가지고 어플리케이션을 표현하기엔 무리가 많기에 Intent를 활용하게 된다!

 

Intent란?

하나의 액티비티가 다른 액티비티를 실행시킬 수 있는 메세지 시스템을 의미.

 

특정 액티비티를 콕 찝어 시작시킬 수 있고 (명시적 Intent),

액티비티 간의 데이터 전달 목적으로 사용 할 수 있고,

특정 기능을 하는 액티비티를 시작 시킬 수 있다. (암시적 Intent),

 

메인 액티비티에 카메라와 전화, 서브 엑티비티에 표시할 텍스트를 입력받는 란을 만들고,

 

메인엑티비티에서 입력한 문자열을 표시해줄 TextView와  메인으로 가는 버튼을 만들어 주었다.

 

 

다만 카메라 위치정보 연락처 등의 민감 권한의 경우 메니페스트 파일을 다음과 같이 수정해주어야한다.

<application></application> 상단에 <uses-permission> 태그를 다음과 같이 작성해주었다.

코드는 다음과 같이 작성했다.

버튼에 클릭리스너를 달아주고, 퍼미션 여부를 확인한다. 그런 뒤 권한이 없으면 요청을 보내고, 

승인되어있다면 인자로 주어진 전화번호로 연결되도록 else 문을 작성했다.

 

서브액티비티로 가는 버튼에는 다음과 같이 클릭리스너를 달아주었다. 

getText()의 경우 타입이 Editable이기 때문에 안전하게 ToString()을 사용해서 문자열 형식으로 형변환 시켜주어야 한다.

 

서브 액티비티에서는 getIntent()를 사용해서 넘겨준 값을 받고, 

input이란 이름으로 edt_input의 문자열을 보내주었기 때문에 꺼내올땐 intent.getStringExtra를 통해

꺼내올 수 있다. 

메인 화면으로 돌아가는 버튼에는 finish();를 달아주었다. 

 

문자열이 잘 넘어가는 걸 확인할 수 있다.

민감권한의 경우 다음과 같이 권한을 요청하는 창이 뜬다. 허용된 이후에는 앱을 종료했다가 켜도 권한을 더 이상 요구하지 않는다.

 

 

 

 

 

+ Recent posts