일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- curl
- FCM
- 안드로이드 푸쉬
- xe
- android 효과음
- PHP
- javascript
- 안드로이드 gcm
- mysql
- Android
- php 취약점
- UML
- WebView
- 자바스크립트
- php 시큐어코딩
- C# IO
- chart.js
- 자동 생성
- 설치
- Mail Server
- soundpool
- 안드로이드
- not working
- 우분투
- dovecot
- roundcube
- html5
- 안드로이드 푸시
- 폼메일
- C#
- Today
- Total
그러냐
URL Scheme를 사용해보자 본문
내가 만든 앱을 웹브라우저를 통해 실행시키고 데이터를 넘겨줄 수 있다. 잘 이해가 안된다면 지금 스마트폰의 웹브라우저를 통해서 아래 링크를 클릭해보면 쉽게 이해할 수 있다.
*다음 지도가 설치되었다면 클릭 (신도림역이 보일 것이다.)
*카카오톡이 설치되었다면 클릭 (이 블로그 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 scheme로 넘겨주고 앱에서는 이 데이터를 받아서 계산을 수행하는 간단한 앱이다.
url 형태는 bk://calc?op1=25&op2=9&operator=+ 이렇 식이다.
op1 |
계산할 첫 번째 값 |
op2 | 계산할 두 번째 값 |
operator | 연산자 (+, -, ×, ÷, %) |
실행결과
웹페이지 (25+4) | 앱 실행 결과 (25+4) |
|
|
웹 페이지 (25/4) |
앱 실행 결과 (25/4) |
|
|
전체 샘플 코드 첨부하였습니다.
*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다
'android' 카테고리의 다른 글
안드로이드 boot 실행 (0) | 2016.01.28 |
---|---|
모바일 웹에서 네이티브 앱 실행하기 (0) | 2016.01.28 |
Android 시스템 설정 페이지로 이동하는 Intent (0) | 2016.01.28 |
안드로이드 블루투스 프로그래밍 - BlueWatch Project #2 (0) | 2016.01.28 |
[android] 안드로이드 블루투스 연결 - bluetooth connect (내용 추가) (0) | 2016.01.28 |