Android URL Intent, Intent Filter, Scheme
Android 2015. 4. 22. 18:27 |Intent Filter 에 대해서.
Intent-Filter 는 Manifest.xml 파일에서 재정해주는 것으로 명시적 호출의 조건이 된다. Intent Filter에는 세가지 항목이 있고 특징은 다음과 같다.
우리가 작성한 어플리케이션도, 인터넷 페이지의 특정 형식의 주소와 상호 작용 할 수 있습니다. 혹시 알고 계셨나요?;;; 방법은 아주 단순합니다. 아래와 같은 인텐트 필터를 메니페스트 상에 추가하기만 하면 됩니다.
<activity android:name=".MyActivity">
<intent-filter> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http" android:host="mysite.com" android:pathPrefix="/news/articles/"/> </intent-filter>
</activity>
핵심은 두 가지. Intent Filter 의 카테고리로 android.intent.category.BROWSABLE 를 추가하고, 캡처하고자 하는 URL 의 형식을 data 요소의 속성 값으로 표현하는 것 입니다. URL 형식은 4가지 속성 값 - scheme, host, pathPrefix, port 를 활용하여 표현할 수 있으며, 각각은 일반적으로 URL 를 구성하는 요소를 나타냅니다. 간단히 설명해 보면, URL 은 크게 아래의 5가지 요소로 구성됩니다.
scheme://host:port/path?query_string
예를 들어, 'http://devilbbong.tistory.com/admin/entry/post/?id=71' 라는 URL은,
scheme 는 'http' 이고,
host 값은 'devilbbong.tistory.com' 이며,
pathPrefix 는 '/admin/entry/post',
그리고 'id=71' 라는 쿼리 문자열로 구성되어있습니다.
'port' 값은 생략될 수 있는데, 이 경우 스키마에 정의된 프로토콜의 기본 포트가 할당 됩니다. 이 경우에는, 'http' 의 기본 포트인 '80' 입니다.
action
이 컴포넌트가 어떤 능력을 가지고 있는지를 표현하는 문자열이다.
이는 안드로이드에서 이미 많은 부분이 준비되어있다. 예를 들면, Intent.ACTION_CALL은 전화를 거는 액션이고, Intent.ACTION_DIAL 은 전화를 받는 액션이다. Intent.ACTION_VIEW는 무언가를 보는 능력이고, Intent.ACTION_SEARCH는 무언가를 찾는 액션이 된다. 이런 행동들을 표현하여 해당 컴포넌트가 어떠한 행동을 할지 지정하는 것이 이 Action 항목이다.
STANDARD ACTION의 종류
- ACTION_MAIN
Main 엔트리 포인트로 시작하는 액션
- ACTION_VIEW
사용자에게 화면을 보여주는 액션
- ACTION_ATTACH_DATA
어떠한 데이터를 다른 곳에 붙이는 액션
- ACTION_EDIT
데이터를 가져오는 액션
- ACTION_CHOOSER
액티비티를 고르는 화면을 떠오르게 하는 액션
- ACTION_GET_CONTENT
사용자에게 특정 데이터를 선택해서 가져오게 하는 액션
- ACTION_DIAL
전화를 거는 액션
- ACTION_CALL
전화를 거는 액션
- ACTION_SENDTO
다른 누군가에게 데이터를 전송하는 액션. 데이터를 받는 상대가 정확하지 않다
- ACTION_ANSWER
걸려온 전화를 다루는 액션
- ACTION_INSERT
지정된 컨테이너에 빈 아이템을 넣는 액션
- ACTION_DELETE
지정된 데이터를 컨테이너에서 삭제하는 액션
- ACTION_SYNC
데이터를 싱크하는 액션
- ACTION_PICK_ACTIVITY
주어진 인텐트에 지정된 액티비티를 가져오는 액션
- ACTION_SEARCH
검색을 수행하는 액션
- ACTION_WEB_SEARCH
웹에서 검색을 수행하는 액션
category
이 능력을 표한하기 위해서 필요한 특수한 상황들을 말한다. 예를 들면, Main 이면, 액티비티의 Main, LAUNCHER는 어플의 런쳐, BROWSERABLE은 브라우저에서 링크를 통해 어플을 실행시키는 경우가 있다.
사전 정의된 카테고리들
- CATEGORY_DEFAULT
디폴트 카테고리
- CATEGORY_BROWSABLE
브라우저에서 어플로 연결하는 경우
- CATEGORY_ALTERNATIVE
유저가 현재 보고있는 데이터에 다른 액션을 취할 경우
- CATEGORY_TAB
인텐트가 탭 액티비티의 탭으로 사용될 경우
- CATEGORY_SELECTED_ALTERNATIVE
유저가 보는 데이터에 선택적인 다른 액션을 취할 경우
- CATEGORY_PREFERENCE
액티비티가 프레프런스의 패널로 사용되는 경우
- CATEGORY_HOME
액티비티가 홈 액티비티로 사용되는 경우
- CATEGORY_TEST
테스트로 사용되는 경우
- CATEGORY_EMBED
부모 컨테이너 내부로 사용되는 경우
data
해당 컴포넌트를 사용할 때, 접근하는 URI를 뜻한다. URI에서는 입 출력 자료에 대한 조건을 정해놓을 수 있다.
어떤 컴포넌트가 edit 액션을 가졌다고 가정한다. 그래서 문자열을 edit하러 들어갔는데 이미지 파일을 edit 하는 것일 수도 있다.
그래서 받고 주는 데이터를 강제화하려면 여기에 정의하면 된다.
text/*, image/* 등과 같이 data에도 여러가지 부가 속성들을 정의할 수 있다.
- scheme
프로토콜을 의미한다. content://, sms:// 등
- host
URI에서 host 정보를 뜻한다.
- port
- path
- pathPattern
- pathPrefix
- mimeType
'Android' 카테고리의 다른 글
[WakeLock] (0) | 2018.03.27 |
---|---|
[Android M] Permissions (0) | 2015.06.12 |
[Android M] API Overview (0) | 2015.06.11 |
[Android M] 4K Display Mode (0) | 2015.06.11 |
[Android M] Camera Features (0) | 2015.06.11 |