post list

2015년 8월 11일

[Android] Intent

Intent 는 Action, Category, Data, Component Name, Extras, Flags 로 이루어지며 컴포넌트들간의 통신에 이용된다. 또한 Intent는 명시적(Explicit) 인텐트와 암시적(Implicit) 인텐트로 나누어진다.

명시적 암시는 인자로 Component Name 을 적어준다. 예를 들면 아래와 같은 인텐트는 전화앱을 구동시키는 명시적 인텐트가 된다.

Intent intent = new Intent(Intent.ACTION_DIAL);

혹은 다음과 같이 클래스 이름을 통해 명시적으로 전달할 수도 있다.

intent.setClassName("com.example.packagename", "com.example.packagename.ActivityName");


반면 아래와 같은 인자로 Intent를 호출하게 되면 암시적인 인텐트가 된다.

Action, Category, Data : 암시적 인텐트


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("image/*");
startActivity(intent);


상대 컴포넌트에게 더 많은 정보를 넘겨주고 싶다면 Extras 인자를 사용하면 되고 Flags 는 안드로이드 시스템에게 제어 정보를 전달한다. 아마 Flags는 쓸 일이 없을 것이다.  다음의 코드처럼 intent에 데이터를 저장시킨다.

intent.putExtra("msg", "initial data");

그 후에 받는 쪽에서는 extra를 이용해 정보를 얻는다.

Intent intent = getIntent();
String s = intent.getStringExtra("msg"); // s = initial data


Activity, Service, Content Provider는 반드시 Manifest에 등록해야 한다. 반면 BroadcastReceiver만은 Manifest에 등록하지 않아도 된다.

댓글 없음:

댓글 쓰기