본문 바로가기

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

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.