1. 엑스트라(Extra)
인텐트는 엑스트라에 필요한 값을 입력하면 안드로이드는 엑스트라를 bundle 객체로 변화시키게 된다. 번들 객체는 인텐트를 사용하여 다른 애플리케이션의 액티비티에게 전달된다. 그리고 액티비티의 onCreate() 콜백메서드의 매개변수로 제공 받게 된다.
액션들이 특별한 종류의 자료들과 한 팀을 이루듯이, 아래와 같이 특정한 엑스트라들과도 역시 한 팀을 이루게 된다.
- ACTION_TIMEZONE_CHANGED 액션은 새로운 시간대를 나타내는 'time-zone' 엑스트라를 제공해야 한다.
- ACTION_HEADSET_PLUG 액션은 헤드셋의 타입에 대한 'name' 엑스트라 뿐만 아니라, 헤드셋이 방금 연결되었는지 아니면 제거 되었는지를 가리키는 'state' 엑스트라를 제공해야 한다.
인텐트 객체를 만들때에는 엑스트라의 다양한 타입과 관계없이 동일한 putExtra() 메서드를 사용한다. 반면에 읽을 때에는 각가 타입별로 get<변수타입>Extra(Extra 명)의 특정한 메서드를 사용해야한다.
- putExtra(EXTRA_NAME, "이름")을 사용하였다면 getStringExtra(EXTRA_NAME)메서드를 사용하여 문자열을 읽게 된다.
- 정수(int) 타입은 putExtra(EXTRA_INT, value)으로 입력하고 getIntExtra(EXTRA_INT)을로 읽는다.
- Boolean 타입은 putExtra(EXTRA_BOOLEAN, value)으로 입력하고 getBooleanExtra(EXTRA_BOOLEAN)으로 읽는다.
// 이메일 전송
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = {"aaa@gmail.com"};
String[] ccs = {"bbb@gmail.com"};
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "이메일 내용");
intent.putExtra(Intent.EXTRA_SUBJECT, "이메일 제목");
intent.setType("message/rfc882");
intent.createChooser(intent, "Choose Email Client");
// SMS 전송
Uri smsUri = Uri.parse("tel:010-1234-5678");
intent = new Intent(Intent.ACTION_SEND, smsUri);
intent.putExtra("sms_body", "SMS 전송합니다.");
intent.setType("vnd.android-dir/mms-sms");
// MMS 전송
Uri mmsUri = Uri.parse("tel:010-1234-4567");
intent = new Intent(Intent.ACTION_SEND, mmsUri);
Uri mediaUri = Uri.parse("content://media/external/images/media/123");
intent.putExtra("sms_body", "이미지와 함께 MMS 전송합니다.");
intent.putExtra(Intent.EXTRA_STREAM, mediaUri);
intent.setType("image/png");
// google 검색
Intent intent2 = new Intent();
intent2.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "찾는 문자");
startActivity(intent2);
[Android]Menu 인플레이터 (0) | 2013.09.15 |
---|---|
[Android]액티비티와 태스크 (0) | 2013.09.09 |
[Android] 인텐트 - 02 (0) | 2013.07.31 |
[Android] 인텐트 (0) | 2013.07.31 |
[Android]시간 포맷 클래스 (0) | 2013.07.13 |
댓글 영역