본문 바로가기
Android

[Android] 안드로이드 : 인텐트(Intent)

by 꿈나무 김땡땡 2019. 12. 5.

1. 인텐트란?

- 액티비티 <-> 액티비티 간 / 액티비티 <-> 서비스 간 등 전달을 돕는 객체(또는 데이터)

- 명시적 인텐트 (Explicit Intent) : 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우

- 암시적 인텐트 (Implicit Intent) : 액션과 데이터를 지정하긴 했지만 호출할 대상이 달라진 수 있는 경우

   ㄴ 범주 (Category), 타입 (Type), 컴포넌트 (Component), 부가 데이터 (Extras)

 

암시적 인텐트

 

2. 인텐트의 대표적 속성

  (1) 범주 (Category)

     - 액션이 실행되는 데 필요한 추가적인 정보를 제공

  (2) 타입 (Type)

     - 인텐트에 들어가는 데이터의 MIME 타입을 명시적으로 지정

  (3) 컴포넌트 (Component)

     - 인텐트에 사용될 컴포넌트 클래스 이름을 명시적으로 지정

  (4) 부가 데이터 (Extras)

     - 인텐트는 추가적인 정보를 넣을 수 있도록 번들 (Bundle) 객체를 담고 있음

     - 이 객체를 통해 인텐트 안에 더 많은 정보를 넣어 다른 애플리케이션 구성요소에 전달할 수 있음

 

3. 인텐트 예제 소스

(1) activity_main.xml

전화걸기 버튼 클릭하면 위 번호로 전화 연결

 

(2) MainActivity.java

public class MainActivity extends AppCompatActivity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String receiver = editText.getText().toString();
// 전화걸기 인텐트
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel : " + receiver));
// 인텐트 객체를 시작화면으로 전달
startActivity(intent);
Intent intent2 = new Intent();
// 문자열로 컴포넌트(또는 액티비티) 직접 지정
ComponentName name = new ComponentName("org.techtown.callintent", "org.techtown.callintent.MenuActivity");
intent2.setComponent(name);
startActivity(intent2);
}
});
}
}

댓글