티스토리 뷰
안녕하세요 박스여우입니다.
이번에는 안드로이드의 인텐트(Intent)에 대해 알아보겠습니다.
■ Intent - 인텐트
인텐트는 안드로이드 OS 상에서 서로 다른 객체들 간에 자료를 전달하거나 호출해 실행하는 단위 입니다. Intent는 애플리케이션 내부와 애플리케이션 간의 메시지를 전달 할 때 사용되는 클래스 입니다. 안드로이드 기기 내의 모든 애플리케이션 컴포넌트 간의 상호작용을 할 수 있습니다. (쉽게 말하자면 인텐트를 통해 해당 애플리케이션에서 다른 애플리케이션을 실행시킨다던가, 데이터들을 주고 받을 수 있습니다.)
인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent) 두 가지로 나눌 수 있습니다.
■ Explicit Intent - 명시적 인텐트
명시적 인텐트는 호출하거나 메시지를 보낼 대상 컴포넌트 이름을 지정하는 방식 입니다. 주로 애플리케이션 내의 컴포넌트 호출 및 데이터 전달 시에 사용되고, Intent 필터가 정의 되어 있지 않더라도 컴포넌트를 호출 및 메시지를 전달 할 수 있습니다.
예로 다른 Activty를 호출할때, 다른 Activity에 값을 전달할 때 등이 있습니다.
■ Implicit Intent - 암시적 인텐트
암시적 인텐트는 명시적 인텐트와는 달리 액션, 카테고리, 데이터와 같은 특징을 포함하고 있는 방식입니다. 암시적 인텐트는 인텐트 해석 과정이 필요하며, 인텐트 조건에 맞는 컴포넌트를 찾기 위해 각 컴포넌트에 정의된 인텐트 필터를 검색하게 됩니다.
예로 전화번호를 이용해 전화걸기, 웹 주소를 이용해 이동 등이 있습니다.
■ Intent의 사용
이번에는 Intent를 사용한 예시들을 알아보겠습니다.
■ 다른 액티비티(Activity) 호출
Intent in = new Intent(MainActivity.this, OpenActivity.class);
startActivity(in);
■ 웹페이지로 이동
Uri uri = Uri.parse("http://boxfoxs.tistory.com");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
■ 전화걸기
Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
■ 이메일 발송
Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
■ 이메일 발송
1번 방법
Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
2번 방법
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));
3번 방법
Intent it = new Intent(Intent.ACTION_SEND);
String[] tos = {"me@abc.com"};
String[] ccs = {"you@abc.com"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it, "Choose Email Client"));
■ 애플리케이션 삭제
1번
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
2번
Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
■ 애플리케이션 설치
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
■ 미디어파일 재생
1번 방법
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/test.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
2번 방법
Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);
■ 마켓에서 앱 검색
Uri uri = Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
■ 구글에서 검색
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);
■ Youtube
1번 방법
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
2번 방법
String videoId = "Fee5vbFLYM4";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+videoId));
intent.putExtra("VIDEO_ID", videoId);
startActivity(intent);
3번 방법
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + videoId));
List<ResolveInfo> list = mContext.getPackageManager().queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY);
if (list == null || list.size() == 0) {
i = new Intent(null, Uri.parse("ytv://" + videoId), PlayList.this, OpenYouTubePlayerActivity.class);
}
mContext.startActivity(i);
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 - Package Rename 패키지 이름변경 (3) | 2016.02.12 |
---|---|
안드로이드 기기 식별 방법 - UUID(Universally unique identifier) (0) | 2016.02.08 |
Notification setLatestEventInfo - API Level 23 (5) | 2016.01.14 |
Android UI Thread 다른 쓰레드로 UI 건들기 - 박스여우 (1) | 2015.12.31 |
안드로이드 GCM(Google Cloud Messaging) Push Message 구현-2 (0) | 2015.12.23 |