안규 공부방

Android > 인텐트(Intent) - 기본 기능들

등록일 : 2017-07-05 11:28 조회수 : 93,999

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

즉, 자바에서 제공하는 URI 클래스는 일반적인 인터넷이나 웹 사이트를 지칭할 때 사용하며, URI 클래스는 안드로이드 내부 자료를

가리키거나 또는 콘텐트프로바이더와 같은 컴포넌트에서 사용하는 클래스이다.

2. [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);
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.