logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Android - Browser 에서 Activity 실행하기

by digipine posted Oct 29, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Attachment
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Attachment

BROWSABLE category 에 대해서...

만약 어려분의 데스크탑 PC에서 다음과 같은 코드가 들어있는 웹 페이지를 오픈했다고 가정합시다.

<html>
  <h2>anywhere on the web.</h2>
  <A HREF="http://www.digipine.com">Digipine</A><br>
  <A HREF="mailto:me@digipine.com">Mail Me, SS!</A><br>
  <A HREF="foo://my.test.com">Foo? What's that?</A><br>
</html>

anywhere on the web.

Digipine
Mail Me, SS!
Foo? What's that?

첫번째 링크를 클릭하면 여러분의 브라우져는 새로운 페이지로 이동하게될 것입니다. 바로 우리 홈페이지이지요.
두번째 링크를 클릭하면 설정된 기본 메일 프로그램이 실행되고 지정된 주소로 메일을 보낼 수 있겠지요.
마지막으로 세번째 링크를 클릭하면 어떻게 될까요? 당현히 에러 메세지가 출력되겠지오. 브라우져가 어디로 이동해야 할지 알지못하는 링크이기 때문이지요.

하지만 안드로이드에서는 세번째와 같은 특별한 URL을 지정된 액티비티를 샐행하는 것과 같은 동작으로 브라우져에서 사용할 수 있도록 설정할 수 있습니다.
매번 사용자가 브라우져에서 링크를 클릭하면 브라우져는 플랫폼으로 다음과 같은 Intent를 보냅니다.

action = android.intent.action.VIEW
category = android.intent.category.BROWSABLE
data = href tag의 텍스트

 
 
<html>
  <h2>anywhere on the web.</h2>
  <A HREF="tel:123456">Call Me. SS!</A><br>
  <A HREF="mailto:me@digipine.com">Mail Me, SS!</A><br>
  <A HREF="foo://my.test.com">Foo? What's that?</A><br>
</html>

anywhere on the web.

Call Me. SS!
Mail Me, SS!
Foo? What's that?

 
만약 안드로이드 브라우져에서 첫번째 링크를 클릭하면 
action = android.intent.action.VIEW
category = android.intent.category.BROWSABLE
data = "tel:123456"
이런 Intent가 전달되고 다이얼러 어플이 실행될 것입니다. 물론 123456이라는 전화 번호가 표시되어있겠지요.
 
device.png

 

 
마찬가지로 두번째 링크를 클릭하면 메일 어플이 실행되겠지요.
 
마지막으로 세번째 링크를 클릭하면 "페이지를 찾을 수 없다"는 메세지를 보실 수 있을 겁니다.
 
action = android.intent.action.VIEW
category = android.intent.category.BROWSABLE
data = "foo://my.test.com"
 
그리고 브라우져는 위와 같은 Intent를 시스템으로 보냈을 겁니다.
 
만약 특정한 액티비티에서
 
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="foo" android:host="my.test.com" />
</intent-filter>
 
이런 필터를 적용하면 세번째 링크를 클릭했을때에 해당 Activity가 실행 될 것입니다.
잘만 사용하면 매우 편리할 것 같습니다.
TAG •

List of Articles
No. Subject Author Date Views
17 atomic vs volatile vs synchronized file 엉뚱도마뱀 2017.12.18 207
16 Atomic Operation에 대해서 엉뚱도마뱀 2017.12.18 180
15 Android 하드웨어 코덱 포팅하기, OpenCore, OpenMAX digipine 2017.11.03 135
14 Ubuntu 기본 쉘 dash 대신 bash로 설정 digipine 2017.11.02 119
13 [안드로이드] 가속도 (Accelerometer)센서 Shake 이벤트 예제 digipine 2017.11.02 131
12 Android - 블루투스 BLE 개발하기 digipine 2017.11.02 1164
11 안드로이드 Native C 코드에서 Intent 보내는 방법 digipine 2017.11.02 54
10 안드로이드 시스템 개발시 mmm 커멘드 사용법 digipine 2017.11.01 29
9 Android - 이미지(비트맵) 리사이징 digipine 2017.11.01 67
8 [Java] SortedSet과 Comparable을 이용한 정렬(Sort) digipine 2017.10.29 34
7 Android - AlarmManager를 이용해서 서비스 실행 시키는 코드 digipine 2017.10.29 48
6 Android - 슬립모드 (Sleep Mode) 방지 코드 digipine 2017.10.29 143
» Android - Browser 에서 Activity 실행하기 file digipine 2017.10.29 27
4 안드로이드 파일 입출력시 한글 깨짐 문제 digipine 2017.10.29 107
3 Android 기반 Application Ant 빌드 방법 digipine 2017.10.29 41
2 안드로이드 Activity간 인자 전달하기 digipine 2017.10.29 97
1 안드로이드 애플리케이션 구성요소 digipine 2017.10.29 42
Board Pagination Prev 1 Next
/ 1