Intent의 4대 컴포넌트

  • 액티비티(Activity)
  • 서비스(Service)
  • 브로드캐스트 리시버(Broadcast Receiver)
  • 컨텐트 프로바이더(Content Provider)

이 각각의 컴포넌트 간의 통신을 맡고 있는 것이 Intent(인텐트)이다.


 

Intent 사용법

1. 명시적 Intent

- 화면 전환

// (현재 액티비티, 이동하고 싶은 액티비티)
Intent intent = new Intent(MainActivity.this, SubActivity.class);

// 액티비티 이동
startActivity(intent);

 

- A activity에서 B activity에 데이터 전달

// (현재 액티비티, 이동하고 싶은 액티비티)
Intent intent = new Intent(MainActivity.this, SubActivity.class);

//데이터 전달
intent.puExtra("별명", 전달하고 싶은 값)

// 액티비티 이동
startActivity(intent);

A 액티비티에서 값을 전달할 때는 별명을 전달한다.

값을 받는 B 액티비티에서 전달 받은 값을 사용할 때는 별명을 사용한다.

 

- A activity에서 B activity에 데이터 전달하고 B activity 종료시 리턴값을 받을 때

// (현재 액티비티, 이동하고 싶은 액티비티)
Intent intent = new Intent(MainActivity.this, SubActivity.class);

// 액티비티 이동
startActivityForResult(intent,100);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
	switch(requestCode){
    	case 100:
        	if(data.getExtras() != null){
            	String str = data.getStirngExtra("resultKey");
                result01.setText("startActivityForResult() 리턴값 받기 : " str);
            }
            break;
        }
        super.onActivityResult(requestCode, resultCode, data);
}

 

2. 암시적 Intent

암시적 인텐트는 Intent의 Action에 따라 해당하는 적합한 애플리케이션의 클래스를 호출한다.

이때 단 하나가 아닌 여러개가 호출 될 수도 있다.

 

암시적 인텐트는 웹브라우저 호출, 이메일 전송, 전화앱으로의 통화 등이 해당된다.

 

- 웹브라우저 인텐트 호출

Intent naver = new Intent(Intent.ACTION_VIEW, Uri.parse("https://m.naver.com"));
startActivity(naver);

 

 

- 이메일 전달 인텐트 호출

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, "sampleXXX@naver.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "전달할 이메일 제목");
intent.putExtra(Intent.EXTRA_TEXT, "전달할 내용");
startActivity(Intent.createChooser(intent, "Choose Email");

 

 

- 전화걸기 인텐트 호출

Intent phone = new Intent(Intent.ACTION_VIEW, Uri.parse("tel : 010 - xxxx - xxxx"));
startActivity(phone);