[Android] 인텐트(Intent) 의 기본

인텐트(Intent)

한 액티비티에서 다른 액티비티를 실행하려면 액티비티 실행을 요청하는 도구가 필요하다. 안드로이드는 브로드캐스팅과 인텐트(Intent)를 제공하는데, 브로드캐스팅은 모든 객체에게 뿌리는 방송과 같은 것이며 인텐트는 이 방송에 실려 전달되는 메시지에 해당된다.

인텐트는 명시적 인텐트와 묵시적 인텐트가 있다.
실행할 액티비티를 직접적으로 정확하게 가리키는 것을 명시적 인텐트라고 하고,
필요한 기능만 설명한 채 직접적으로 액티비티를 가리키지 않는 것을 암시적 인텐트라고 한다.

명시적 인텐트가 가장 빈번히 사용되는 경우는 하나의 패키지 안의 한 액티비티가 또 다른 액티비티를 호출할 때이다. 이것이 가능한 이유는 너무나도 당연한 일이지만 호출하는 쪽에서 호출할 액티비티를 임포트할 수 있기때문이다.
명시적 인텐트를 사용하는 법은 어렵지 않다. 현재 액티비티의 컨텍스트와 실행할 액티비티 클래스를 인텐트 생성자의 인자로 사용하여 인텐트 인스턴스 하나를 생성한 후에 startActivy() 메서드에 생성한 인텐트를 인자로 넘겨서 호출하면 된다.
... (생략)...
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
... (생략)...
만일 액티비티의 실행 결과를 받아서 추가적인 일을 수행하려면 startActivity() 메서드 대신
startActivityForResult() 메서드를 사용하면 된다.
... (생략)...
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 0);
... (생략)...
startActivityForResult() 메서드가 실행되고 지정한 액티비티가 실행된 후에 실행된 액티비티가 다시 종료되면 액티비티의 onActionResult() 메서드가 호출될 것이다.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
      // 실행한 액티비티가 종료된 후에 필요한 코드를 이곳에 추가합니다.
}
Intent 클래스 생성자의 첫 번째 인자는 현재 액티비티의 컨텍스트이고 두 번째 인자는 실행할 액티비티의 클래스이다.

암시적 인텐트는 앞에서 설명한 것처럼 실행 주제를 정확하게 서술하지 않고 자신의 목적만으로 적합한 액티비티를 실행하는 것이다.  암시적 인텐트를 사용하기 위해서는 두 가지가 필요하다. 하나는 실행하고자 하는 기능을 나타내는 액션(action)이며, 다른 하나는 액션과 함께 액티비티에 넘겨줄 데이터(data)입니다. 액션은 String 객체로 표현되며 데이터는 Uri 클래스의 인스턴스 이다. 예를 들어 가장 많이 사용되는 전화의 경우 액션으로 Intent.ACTION_CALL을, 데이터로 Uri.parse("tel:01012345678") 과 같은 Uri 값을 사용한다. 이를 코드로 구현하면 아래와 같다.
...(생략)...
/* 전화를 걸기 위한 인텐트를 생성합니다. */
Intent intent = new Intent(Intent.ACTION_CALL);
/* 전화를 Uri 인스턴스로 변환합니다.  */
intent.setData(Uri.parse("tel:01012345678"));
/* 생성된 인텐트를 사용해 액티비티를 실행합니다.  */
startActivity(intent);
...(생략)...
전화를 거는 액티비티를 실행하기 위해 Intent.ACTION_CALL 액션을 사용하고 전화번호를 인자로 넘겨줘야 한다는 사실을 어떻게 알 수 있을까? 암시적 인텐트를 사용하기 위해서는 실행될 대상이 어떤 조건의 인텐트를 받는지 문서상으로 알고 있어야 한다. 안드로이드의 기본 애플리케이션 가운데 전화, 브라우저, 맵 등은 액티비티 공유를 위해 필요한 액션과 데이터를 문서로 공유하고 있다.

구글의 개발자 사이트의 http://developer.android.com/guide/appendix/g-app-intents.html 로 들어가서 Intents List : Invoking Google Applications on Android Devices(인텐트 목록: 안드로이드 기기에서 구글의 애플리케이션 호출하기)를 읽어보면 액션과 필요한 데이터를 확인할 수 있다.



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 홍반장

2010/11/09 16:42 2010/11/09 16:42
, , ,
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/5633


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Statistics Graph

Site Stats

Total hits:
236093
Today:
562
Yesterday:
195