Intent란? (안드로이드)

Intent(인텐트) 는 안드로이드에서 컴포넌트 간(액티비티, 서비스, 브로드캐스트 리시버 등)의

데이터 전달 및 실행을 담당하는 메시징 객체입니다.

 

 

1. Intent의 역할

컴포넌트 간 통신
새로운 액티비티(Activity) 또는 서비스(Service) 실행
데이터 전달 (문자열, 숫자, 객체 등)
시스템 이벤트 전달 (예: 충전 연결, 네트워크 변경 등)

 

 

2. Intent의 종류

① 명시적(Explicit) Intent

  • 정확한 대상 컴포넌트를 지정하여 실행하는 방식.
  • 일반적으로 앱 내에서 다른 액티비티(Activity)나 서비스(Service)를 실행할 때 사용.

 

 

🔹 사용 예시: Activity 간 이동

Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);

➡ NextActivity가 실행됨.

 

 

🔹 사용 예시: 데이터 전달

Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.putExtra("username", "JohnDoe"); // 데이터 전달
startActivity(intent);

 

➡ NextActivity에서 데이터 받기:

String username = getIntent().getStringExtra("username");
 
 

 

🔹 사용 예시: 서비스 실행

Intent intent = new Intent(this, MyService.class);
startService(intent);

 

 

 

② 암시적(Implicit) Intent

  • 특정 컴포넌트를 직접 지정하지 않고, 안드로이드 시스템이 적절한 앱을 선택하여 실행.
  • 보통 웹 브라우저 열기, 전화 걸기, 지도 보기, 갤러리 열기 등에 사용됨.

🔹 사용 예시: 웹사이트 열기

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com"));
startActivity(intent);

 

 

🔹 사용 예시: 전화 걸기

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:01012345678"));
startActivity(intent);

 

 

 

🔹 사용 예시: 지도 열기

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:37.7749,-122.4194"));
startActivity(intent);

 

 

 

🔹 사용 예시: 사진 선택 (갤러리 열기)

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, 1);

 

 

 

3. Intent 사용 시 주요 메서드

startActivity(intent) 새로운 액티비티 실행
startActivityForResult(intent, requestCode) 결과를 받기 위한 액티비티 실행
startService(intent) 서비스 시작
bindService(intent, connection, flags) 서비스 바인딩
sendBroadcast(intent) 브로드캐스트 메시지 전송

 

 

 

4. Intent 사용 예제

📌 예제 1: Activity 간 이동 및 데이터 전달

✅ MainActivity에서 SecondActivity로 이동하면서 데이터 전달

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("message", "Hello from MainActivity!");
startActivity(intent);

 

 

✅ SecondActivity에서 데이터 받기

String message = getIntent().getStringExtra("message");
Toast.makeText(this, message, Toast.LENGTH_LONG).show();

 

 

 

📌 예제 2: 카메라 앱 실행하여 사진 찍기

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 100);

 

 

 

 

5. 정리

Intent는 안드로이드에서 컴포넌트 간 데이터를 전달하고 실행을 제어하는 객체
명시적 Intent → 같은 앱 내에서 특정 컴포넌트를 실행할 때 사용
암시적 Intent → 시스템 또는 다른 앱을 호출할 때 사용 (웹 브라우저, 전화, 지도 등)
데이터 전달 가능 → putExtra()를 사용하여 데이터를 전달하고, getIntent()로 받음

💡 핵심: Intent는 안드로이드 앱에서 컴포넌트 간 통신을 가능하게 하는 필수적인 개념!

+ Recent posts