인텐트(Intent)란?
인텐트는 안드로이드 컴포넌트 간에 작업을 수행하도록 요청하는 메시지 객체이다. 이를 통해 액티비티, 서비스, 브로드캐스트 리시버 간의 통신을 쉽게 할 수 있다.
코드 설명
아래는 MainActivity에서 인텐트를 활용한 다양한 기능을 구현한 코드이다. 각 기능마다 설명을 첨부하였다.
package com.kks.intent;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 연락처 선택하는 액티비티 띄우기
// selectContact();
// 웹 브라우저 액티비티를 실행시키는 함수
// openWebPage("http://naver.com");
// SMS 작성하는 액티비티를 실행시키는 함수
// composeSMS("010-2222-3333");
// 이메일 작성하는 액티비티를 실행시키는 함수
//composeEmail(new String[]{"abc@naver.com"}, "테스트 메일");
// 공유버튼 눌러서, 문자열을 공유할 수 있도록 하는 함수
shareText("안녕하세요~~");
}
});
}
// 연락처 선택하는 액티비티 띄우기
void selectContact(){
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivity(intent);
}
// 웹 브라우저 액티비티를 실행시키는 함수
void openWebPage(String uri){
Uri webpage = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
startActivity(intent);
}
// SMS 작성하는 액티비티를 실행시키는 함수
void composeSMS(String phone){
Uri uri = Uri.parse("smsto:" + phone);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
// 이메일 작성하는 액티비티를 실행시키는 함수
void composeEmail(String[] addresses, String subject){
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
startActivity(intent);
}
// 공유버튼 눌러서, 문자열을 공유할 수 있도록 하는 함수
void shareText(String text){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.setType("text/plain");
Intent shareIntent = Intent.createChooser(intent, "선택하세요");
startActivity(shareIntent);
}
}
기능별 설명
1. 연락처 선택 액티비티 실행
selectContact() 메서드는 사용자가 기기에서 연락처를 선택할 수 있는 액티비티를 띄우는 역할을 한다. 이를 위해 Intent.ACTION_PICK와 ContactsContract.Contacts.CONTENT_TYPE을 사용한다.
void selectContact() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivity(intent);
}
2. 웹 페이지 열기
openWebPage(String uri) 메서드는 주어진 URL을 웹 브라우저에서 여는 역할을 한다. Intent.ACTION_VIEW를 사용하여 지정된 URI를 처리할 수 있는 액티비티를 시작한다.
void openWebPage(String uri) {
Uri webpage = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
startActivity(intent);
}
3. SMS 작성
composeSMS(String phone) 메서드는 지정된 전화번호로 SMS를 작성하는 액티비티를 띄운다. 이를 위해 smsto: URI 스킴과 Intent.ACTION_VIEW를 사용한다.
void composeSMS(String phone) {
Uri uri = Uri.parse("smsto:" + phone);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
4. 이메일 작성
composeEmail(String[] addresses, String subject) 메서드는 이메일 작성 화면을 띄운다. Intent.ACTION_SENDTO와 mailto: URI를 사용하여 이메일 클라이언트를 실행한다.
void composeEmail(String[] addresses, String subject) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
startActivity(intent);
}
5. 텍스트 공유
shareText(String text) 메서드는 텍스트를 다른 앱과 공유할 수 있도록 하는 인텐트를 생성한다. Intent.ACTION_SEND를 사용하여 텍스트를 공유하는 액티비티를 띄운다.
void shareText(String text) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.setType("text/plain");
Intent shareIntent = Intent.createChooser(intent, "선택하세요");
startActivity(shareIntent);
}
결론
이번 포스트에서는 안드로이드 인텐트를 활용하여 다양한 기능을 구현하는 방법을 살펴보았다. 인텐트를 활용하면 앱 간의 상호작용을 쉽게 구현할 수 있으며, 사용자에게 다양한 경험을 제공할 수 있다. 이 포스트를 통해 인텐트를 활용한 기능 구현에 대해 이해하고, 실제 프로젝트에 적용해 보길 바란다.
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오]유튜브API 이용하여 앱에 검색결과 출력하기 (2) | 2024.06.16 |
---|---|
[안드로이드 스튜디오]유튜브 API를 postman으로 활용하여 불러오기 (2) | 2024.06.12 |
[안드로이드 스튜디오]안드로이드 앱에서 Glide를 사용한 효율적인 이미지 로딩 및 디스플레이 방법 (0) | 2024.06.12 |
[안드로이드 스튜디오]액션바 메뉴를 화면에 보여주기 (0) | 2024.06.11 |
[안드로이드 스튜디오]네트워크 통신: Volley 라이브러리 사용법 및 예제 (0) | 2024.06.10 |