PostList

2016년 8월 21일 일요일

Intent 추가

Intent 안에는 Action 정보와 데이터 정보가 있음.

Intent는 시스템에 ~~를 해달라고 요청을 하는 용도로 쓰이는데, 그 요청 정보가 Action이다.

예를 들어 ACTION_DIAL tel:000-1111-1111 라고 하면 시스템에 해당 번호로 dial을 하라고 요청을 하는 것임.


명시적 인텐트(Explicit Intent)
- 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우.
예)특정 Activity를 호출하는 경우(Main2Activity 등), 특정 액티비티를 지정해주고 있기 때문에 명시적 인텐트다.

암시적 인텐트(Implicit Intent)
- 액션과 데이터를 지정하긴 했지만 호출할 대상이 달라질 수 있는 경우
- 범주(category), 타입(Type), 컴포넌트(component), 부가 데이터(extras)
예) 위 ACTION_DIAL을 포함한 인텐트를 실행할 경우, 전화 어플이 여러 개 있으면 그 중 어떤 어플을 이용할지는 확실하게 정해주지 않기 때문에 암시적 인텐트이다.



Manifest: 어플이 시스템에 요청하는 권한들을 모두 포함하고 있음. 어플을 처음 다운받으면 ~~어플이 시스템 ~~(카메라, 사진첩 등)에 대한 권한을 요청하고 있습니다 라고 뜨는 것이 Manifest에 등록된 권한들 때문에 뜨는거임.
예) 어플에서 바로 전화를 이용할 수 있도록 만들기 위해서는 manifest에

<uses-permission android:name="android.permission.CALL_PHONE" />

을 추가해줘야 전화어플을 통하지 않고 바로 전화를 걸 수 있는 권한을 얻게 된다.


Intent를 이용해서 액티비티 간 데이터를 주고받는 법.

일단 액티비티1에
 public void onButton1Clicked(View V){

        Intent intent111 = new Intent(getApplicationContext(),Main2Activity.class);


//        Intent intent112 = new Intent();        intent111.putExtra("title","소녀시대");

        startActivity(intent111);

    }
라고 하고, 액티비티2의 onCreate() 안에
Intent intent113 = getIntent();

if (intent113 != null) {
    String title = intent113.getStringExtra("title");
    Toast.makeText(getApplicationContext(), "title : "+ title, Toast.LENGTH_LONG).show();
}
를 추가한다.


댓글 없음:

댓글 쓰기