본문 바로가기

아옳옳의 코딩공부/아옳옳의 안드로이드스튜디오

2021-03-08 안드로이드 스튜디오 (명시적인텐트 , 암시적인텐트 )

반응형

쉽게 생각해서 정보나 데이터를 보내고 받는거라고 생각하면 되는데 

명시적인 인텐트는 내가 보낼곳을 딱 정해서 보내고 받는것 

암시적인 인텐트는 내가 보낼곳을 명시하지 않고 보내고 받는것 

 

명시적인텐트는 전에 정리 해놓은것들을 참조하면 될것이다 

암시적 인텐트 

특정 클래스를 지정하지 않고 (직접적으로 말 안함!) 찾아가게 한다 

예) ~를 보여줘! 라고 하면 ~가 가능한 곳으로 찾아가서 해당하는 것들을 실행 시켜준다 

 

내부에서 아래 그럼처럼 이동하는데 매니패스트에 작성한 것을 패키지 매니저가 알고있다 

패키지 매니저가 매니패스트를 보고 찾아준뒤에 실행 하는 원리이다 

암시적 인텐트 작동원리

다른패키지를 할때 사용하는게 조하!!!!! 

 

인텐트의 정보

사용방법 

 

1.  명시적 인텐트와 같이 보내는곳을 먼저 정의 해주어야한다 

그때 받는곳에 매니패스트를 통하여 전달을 해줄수 있는데 

암시적으로 원하는 컴포넌트 (액티비티 , 서비스 ,리시버)등을 실행하기위한 용도이다 

액션  =  ~능력에대한 말을 적는다 (보여줘! 라고 하면 View 를 적는다 ) 하지만 View 라고 하면 어떤건지 자세하게 모른다 그래서 사용하는게 카테고리이다 

카테고리 = 여러가지가 런처 (실행해주는것 ) , (브라우저 인터넷관련된걸 사용하겠다 )  

데이터위치와 타입 = 데이터의 위치와 타입이 일치 하는지 걸러준다 (스킴을 적어주고 스킴에 해당하는 것들을 걸러준다 ) 

등을 작성해주어야한다 

 <intent-filter tools:ignore="AppLinkUrlError">
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT"/> <!-- 암시적 인텐트 해줌-->
                <category android:name="android.intent.category.LAUNCHER" /> <!-- 실행해주는것 -->
                <category android:name="android.intent.category.BROWSABLE"/> <!-- 인터넷 관련된것 사용하겠다 -->
                <data android:scheme="callmyapp" android:host="takephoto"/> <!-- html에 이걸로 걸러준다 / 나하고 일지하면 들어온다 -->
            </intent-filter>

액션값은 내가 마음대로 지정가능함!! 하지만 ( android. 을 붙여주는게 바람직함! )

여기서 <category android:name="android.intent.category.DEFAULT"/>

이 카테고리는 암시적인텐트 사용을 위한 카테고리이다 

 

2. 보내는곳 준비끝 

 Intent intent = new Intent();
                intent.setAction("android.action.Android_Self");
                intent.addCategory("com.example.category.MYCATEGORYDA");
                intent.putExtra("VoteCount",voteCount);
                intent.putExtra("ImageName",imgName);
                startActivity(intent);

보내는 곳에서  카테고리 android:name="android.intent.category.DEFAULT 는 굳이 작성 안해도 안드로이드가 알아서 추가해준다  

 

intent.setAction = 주로 사용하는 것 (필수 )  

intent.addCategry = 보조로 사용하는 것 ( 보조적인것 ) 

 

 

 

3. 받는곳 받아 사용하기 

Intent intent = getIntent();
        int[] voteResult = intent.getIntArrayExtra("VoteCount");
        String[] imgName = intent.getStringArrayExtra("ImageName");

여기서는 배열에 넣어 보내고 받는것을 해주었는데 (보내는것이 배열이기 떄문에 )

명시적인 인텐트 처럼 따로 주소값을 설정하지 않고 암묵적으로 너 저기로 가라! 하는것과 같다 

보통 같은 패키지 내부에서는 명시적을 사용하지만 다른패키지라면 암시적인텐트 더 많이 사용한다! 

 

등 기타 카테고리 등

<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT"/> <!-- 암시적 인텐트 해줌-->
<category android:name="android.intent.category.LAUNCHER" /> <!-- 실행해주는것 -->
<category android:name="android.intent.category.BROWSABLE"/> <!-- 인터넷 관련된것 사용하겠다 -->
<data android:scheme="callmyapp" android:host="takephoto"/> <!-- html에 이걸로 걸러준다 / 나하고 일지하면 들어
</intent-filter>

 

조건 정리!! 

이것을 활용해서 다음시간에 실습을 해본거 있으니 그거 참조하면 될거같아~ !

 

(21-03-10 복습 1회)

반응형