티스토리 뷰

안녕하세요 박스여우입니다.

이번에는 안드로이드의 인텐트(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);



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함