상세 컨텐츠

본문 제목

[Android] 인텐트 - 02

Android 개발

by mobile 2013. 7. 31. 21:13

본문

반응형

1. URI(Uniform Resource Identifier)

: 인텐트 자료에서 사용하는 URI는 자바에서 제공하는 URI 클래스와 안드로이드 내부에서 사용하는 URI 클래스로 제공한다.

즉, 자바에서 제공하는 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 {

public static final String DEBUG_TAG = "MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button goButton = (Button)findViewById(R.id.go);

goButton.setOnClickListener(mGoListener);

}

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 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);


반응형

'Android 개발' 카테고리의 다른 글

[Android]액티비티와 태스크  (0) 2013.09.09
[Android] 인텐트 - 03  (0) 2013.08.01
[Android] 인텐트  (0) 2013.07.31
[Android]시간 포맷 클래스  (0) 2013.07.13
[Android]자바 스타일 문자  (0) 2013.04.21

관련글 더보기

댓글 영역