내가 만든 앱을 웹브라우저를 통해 실행시키고 데이터를 넘겨줄 수 있다. 잘 이해가 안된다면 지금 스마트폰의 웹브라우저를 통해서 아래 링크를 클릭해보면 쉽게 이해할 수 있다.
*다음 지도가 설치되었다면 클릭 (신도림역이 보일 것이다.)
*카카오톡이 설치되었다면 클릭 (이 블로그 url을 전송한다.)
1. 특정 URL을 사용한다고 선언
다음 지도의 경우 daummaps:// 로 시작하며 그 뒤에 액션 및 파라미터를 추가하여 사용한다.
*다음 지도 URL Scheme 설명 : http://dna.daum.net/apis/urlscheme/mmaps/intro
카카오톡의 경우 kakaolink:// 로 시작하며 그 뒤에 액션 및 파라미터를 추가하여 사용한다.
*카카오 링크 설명 : http://www.kakao.com/link/ko/api?tab=mobile
두 앱처럼 자신만의 url을 사용할 수 있게 해보자. 그러기 위해서는 manifest 파일에 선언해 주어야 한다.
액티비티 태그 안에 intent-filter를 추가하여 속성을 뷰여하자.
action은 View, category는 DEFAULT와 BROWSABLE.
여기까지는 url scheme를 사용하기 위한 준비이고 그렇다면 자신만의 url scheme를 등록해 보자.
마찬가리로 intent-filter에 data 를 추가한다. scheme는 http, daummaps, kakaolink 같은 프로토콜 부분이다. host는 www.daum.net과 같이 프로토콜 이후에 나오는 경로이다. 이 부분은 url을 사용하는 액티비티를 구분하던지, 동작형식을 구분하던지 자신에게 알맞는 용도로 사용하면 된다.
AndroidManifest.xml
<activity
android:name=".BkCalculatorActivity"
android:label="@string/title_activity_calc">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="bk" android:host="calc"/>
</intent-filter>
</activity>
2. 소스상에서 host 및 파라미터 받는 방법
url scheme를 사용하면 url 형태로 데이터가 들어오기 때문에 해당 url에서 어떤 액션인지 어떤 파라미터가 있는지 알아야 구분해서 처리를 할 수 있다.url scheme 를 통해서 액티비티가 실행되면 intent에 data 가 포함되어 들어온다.
Uri data = getIntent().getData(); 를 통해서 data를 받아올 수 있다.
여기서 getIntent().getData(); 값이 null 인지 아닌지 체크를 해야 한다. 그냥 실행된 것인지 url 을 통해서 실행된 것인지 판단해야 하기 때문이다. 그냥 실행된 것이면 null 이된다.
Uri data = getIntent().getData();
if(data != null) {
//url을 통해서 실행된 것. 파라미터를 받아서 작업 수행해야 함.
}
Uri의 다양한 메소드를 통해서 여러가지 값을 알 수 있다.
toString() 으로 전체 url 형태를 알 수 있다.
getHost() 로 host 값을 알 수 있다.
getQuery()로 전체 파라미터를 알 수 있다.
getQueryParameter(String key) 로 각각의 파라미터의 값을 알 수 있다.
만약 bk://calc?op1=25&op2=9&operator=+ 이렇게 url을 실행 시키면
scheme 는 bk가 되고 host는 calc가 되면 전체 query는 op1=25&op2=9&operator=+ 이다.
만약 getQueryParameter("op1") 을 하면 25 라는 값을 얻을 수 있다.
3. 샘플 프로젝트(단순 계산기)
url 형태는 bk://calc?op1=25&op2=9&operator=+ 이렇 식이다.
op1 |
계산할 첫 번째 값 |
op2 | 계산할 두 번째 값 |
operator | 연산자 (+, -, ×, ÷, %) |
실행결과
웹페이지 (25+4) | 앱 실행 결과 (25+4) |
웹 페이지 (25/4) |
앱 실행 결과 (25/4) |
전체 샘플 코드 첨부하였습니다.
*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다'Dev. > Android' 카테고리의 다른 글
Google Maps Android API v2 시작하기 (0) | 2012.12.27 |
---|---|
항상 최상위에 나오는 뷰 만들기2 (0) | 2012.10.22 |
즉석 복권 같은 스크래치(Scratch) 효과를 주는 뷰 (0) | 2012.07.23 |
GCM 사용하기 3 (JSP로 GCM 푸시 서버 만들기) (0) | 2012.07.20 |
GCM 사용하기 2 (단말에 GCM 구현하기) (0) | 2012.07.19 |