본문 바로가기
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);
            }
        });
    }
}

댓글