728x90

Intent

intent: 우편배달부. 의사소통을 책임짐

  • 액티비티와 액티비티 간
  • 앱과 앱 간

 

타입 두 가지

1) 명시적 Intent

- 하나의 앱 내에서 액티비티와 액티비티 간 소통 시 자주.

- 보낸 이와 받는 이가 명시되어 있음

 

Intent intent = new Intent(this, NewActivity.class);

startActivity(intent);

 

보낸 이 : this(현재의 액티비티)

받는 이: NewActivity.class

 


2) 암시적 Intent

- 앱과 앱 간(다른 앱의 활동을 호출하여 원하는 기능을 수행, 웹 브라우저를 열어 특정 페이지를 표시하거나, 연락처 앱을 열어 특정 연락처를 표시하는 등)

- 시스템 서비스 사용: Android 시스템의 여러 서비스를 활용( 이미 안드로이드에 내장되어 있는 기능) 예를 들어, 카메라 앱을 시작하여 사진을 찍는 기능, 위치 서비스를 사용하여 현재 위치를 얻는 기능

- 받는 사람과 보내는 사람이 명시되어있지 않음

 

sendIntent.setAction(Intent.ACTION_CALL);
startActivity(sendIntent);
Intent sendIntent = new Intent();

 


Intent 없는 상태

...

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

	@Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState); //onCreate는 AppCompatActivity 클래스에 정의된 콜백메서드
    setContentView(R.layout.activity_main);
    
    Button button = (Button) findViewById(R.id.btn_call); //Button은 view에 속한 컴퍼넌트
    button.setOnClickListener(this); //this는 OnClickListener 인터페이스
    
    }
    
    @Override
    publid void onClick(View view) {
    	Toast.makeText(MainActivity.this, "Click!!", Toast.LENGTH_SHORT).show();
        } //여기서 this는 입력받은 매개변수인 view, 즉 클릭된 view의 컴퍼넌트인 button
        //여기서 onClick은 OnClickListener 인터페이스 내부에 정의된 콜백 메서드
        //즉, button이 클릭되면 '클릭되었다'는 것을 OnClickListener가 알아차리고 이에 따라 onClick 콜백 메서드가 실행됨
    }

 

암시적 Intent

...

@Override
public void onClick(View view){

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_CALL);
    startActivity(intent);
    }
}

 

명시적 Intent

...

@Override
public void onClick(View view) {
    Intent intent = new Intent(MainActivity.this, CallActivity.class); //또다른 자바 클래스 activity를 생성함
    startActivity(intent);
    }
}

 

728x90

+ Recent posts