URL : http://promobile.tistory.com/199
1. URI(Uniform Resource Identifier)
: 자바에서 제공하는 URI 클래스는 일반적인 인터넷이나 웹 사이트를 지칭할 때 사용하며, URI 클래스는 안드로이드 내부 자료를 가리키거나 또는 콘텐트프로바이더와 같은 컴포넌트에서 사용하는 클래스이다.
[scheme:][//기관][경로][?쿼리][#fragment]
- 스킴(schema) : 프로토콜은 통신상에서 사용하는 용어이고 URI 에서는 'http', 'content', 그리고 'tel' 등과 같은 프로토콜을 스킴(Scheme)이라 부른다.
- 기관(Authority) : 기관은 다른 자료를 구분하기 위해 사용한다. content 스킴을 사용하는 경우 강제 규정은 아니지만 'com.android.example'와 같이 자바 고유 패키지 이름을 사용한다. 보다 일반적인 http는 인터넷 주소 규정에 따라 www.google.com'으로 표기하게 된다.
- 경로(PATH) : 구체적인 자료의 위치를 나타낸다.
- 쿼리(Query) : 물음표('?') 뒤에 위치하여 추가적인 자료의 검색을 요구한다.
- 프레그먼트(fragment) : 자료를 분류한 색인이다.
안드로이드 액티비티매니저는 인텐트와 함께 자료 타입을 기준으로 전달할 컴포넌트를 선정하게 된다. 대부분 URI를 보고 추측할 수 있지만 가끔 URI를 보고 추측할 수 있지만 가끔 URI만으로 판단하기 어려운 경우, 추가적인 정보로 자료 타입(MIME 타입)을 참조한다.
- setData() 메서드는 URI만 사용해서 자료를 지정하며, getData()에 의해 읽혀지게 된다.
- setType()은 MIME 타입을 지정하며, getType()에 의해 읽는다.
- setDataAndType()은 URI와 MIME 타입 모두 다 지정할 수 있다.
아래는 안드로이드 매니페스트에서 사용하는 MIME 타입의 예이다. 하위타입 필드는 '*'와 같이 와일드카드를 사용할 수 있다.
<data android:scheme="file" /> <data android:scheme="content" /> <data android:mimeType="text/html" /> <data android:mimeType="text/plain" /> <data android:mimeType="audio/*" /> <data android:mimeType="video/*" /> <data android:mimeType="image/*" /> <data android:mimeType="application/vnd.android.package-archive" /> <data android:mimeType="text/xml" /> <data android:mimeType="application/zip" /> <data android:mimeType="image/tiff" /> <data android:mimeType="application/rtf" /> <data android:mimeType="application/excel" /> <data android:mimeType="application/msword" /> <data android:mimeType="video/mpeg" android:scheme="http" /> |
아래는 음악을 가져오는 예제이다.
public class MainActivity extends Activity { ..... private final OnClickListener mGoListener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); try { startActivity(Intent.createChooser(intent, "select music")); } catch (ActivityNotFoundException e) { // TODO: handle exception Log.e(DEBUG_TAG, "ActivityNotFoundException !!!"); } } }; ..... } |
아래는 그 외 여러가지 데이터에 따른 관련 앱을 호출 하는 Intent구성 방법이다.
// 웹브라우저를 사용하여 웹사이트를 호출하는 방법 Intent result = null; Uri cafeUri = Uri.parse("http://www.google.com"); result = new Intent(Intent.ACTION_VIEW, cafeUri); // Google map 호출하는 방법 Uri mapUri = Uri.parse("geo:45.5,-5,5"); result = new Intent(Intent.ACTION_VIEW, mapUri); // 전화 걸기 방법 Uri telUri = Uri.parse("tel:01066542126"); result = new Intent(Intent.ACTION_DIAL, telUri); // 패키지 설치 작업 Uri packageUri = Uri.fromParts("package", "xxx", null); result = new Intent(Intent.ACTION_PACKAGE_ADDED, packageUri); result = new Intent(Intent.ACTION_DELETE, packageUri); // 음악 호출 Uri playUri = Uri.parse("file://sdcard/download/everything.mp3"); result = new Intent(Intent.ACTION_VIEW, playUri); // 이메일 전송 Uri emailUri = Uri.parse("maito:root@gmail.com"); result = new Intent(Intent.ACTION_SENDTO, emailUri); |
'Programming > Android Java' 카테고리의 다른 글
안드로이드 화면 밝기 조정 (0) | 2014.08.29 |
---|---|
블루투스(Bluetoot)통신, SPP (1) | 2014.08.28 |
공유하기 메뉴를 위한 Intent (0) | 2014.08.27 |
Galley를 이용한 비디오/이미지 파일 재생에 대한 Intent (0) | 2014.08.27 |
Thread 2(간단한 URL 검색 스레드) (0) | 2014.08.27 |