코드네임 :
📱 모바일프로그래밍 - 암시적 인텐트📱 본문
[ 암시적 인텐트 Implicit Intent (묵시적) ]
: 약속된 액션을 지정하여 안드로이드에서 제공하는 기존 응용 프로그램을 실행함
- 수신 대상의 이름을 포함하지 않음
- 예시 : 전화걸기 (전화번호를 인텐트로 넘긴 후에 전화 걸기 응용 프로그램이 실행되는 것과 같음)
1. 암시적 인텐트란?
- 목적에 따라 적절한 앱이나 컴포넌트를 Android 시스템이 알아서 선택하도록 맡기는 인텐트.
- 실행할 대상 액티비티나 컴포넌트를 명시적으로 지정하지 않음.
- 대신 **동작(Action)**과 **데이터(Data)**를 정의하여 Android 시스템이 해당 동작을 처리할 수 있는 앱을 찾아줍니다.
2. 예시
명시적 인텐트
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
- 명확하게 SubActivity를 실행하겠다고 지정한 인텐트입니다.
- 실행 대상이 특정 앱이나 액티비티로 명시적으로 지정됩니다.
암시적 인텐트
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.google.com"));
startActivity(intent);
- Intent.ACTION_VIEW: 웹 페이지를 열겠다는 목적을 설정.
- Uri.parse("https://www.google.com"): 열 웹 페이지의 주소를 지정.
- 대상 컴포넌트는 지정하지 않음. Android 시스템이 웹 페이지를 열 수 있는 적절한 앱(브라우저)을 찾아 실행합니다.
Uri.parse()는 문자열로 작성된 URI 데이터를 Android에서 사용할 수 있는 Uri 객체로 변환합니다. Uri 객체는 특정 데이터의 위치나 리소스를 식별하는 역할을 합니다.
[ Intent 객체 구성 요소 ]
코드 : Example6_2
//onCreate() 내부
Button btnDial = findViewById(R.id.btnDial);
Button btnWeb = findViewById(R.id.btnWeb);
Button btnGoogle = findViewById(R.id.btnGoogle);
Button btnSearch = findViewById(R.id.btnSearch);
Button btnSms = findViewById(R.id.btnSms);
Button btnPhoto = findViewById(R.id.btnPhoto);
btnDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri = Uri.parse("tel:010-1234-5678"); //uri 변수에는 전화번호와 관련된 정보를 담은 Uri 객체가 저장
Intent intent = new Intent(Intent.ACTION_DIAL,uri); //uri 변수안에 들어가있는 정보를 약속된 다이얼에 불러오시긔
startActivity(intent); //위에서 정의한 Intent를 실행
}
});
btnWeb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri = Uri.parse("http://www.swu.ac.kr");
Intent intent = new Intent(Intent.ACTION_VIEW,uri); //uri 변수안에 들어가있는 정보를 약속된 뷰 화면에 불러오시긔
startActivity(intent);
}
});
btnGoogle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri = Uri.parse("https://maps.google.co.kr/maps?q=" + 37.62827 + "," + 127.09048);
Intent intent = new Intent(Intent.ACTION_VIEW,uri); //uri 변수안에 들어가있는 정보를 약속된 뷰 화면에 불러오시긔
startActivity(intent);
}
});
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); //웹서치 화면 띄우기
intent.putExtra(SearchManager.QUERY,"안드로이드");
startActivity(intent);
}
});
btnSms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_SENDTO); //문자 보내기 화면 띄우는 액션
intent.putExtra("sms_body", "안녕하세요");
intent.setData(Uri.parse("smsto:"+Uri.encode("010-1234-5678")));
startActivity(intent);
}
});
btnPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 미디어 스토어에서 캡쳐 액션
startActivity(intent);
}
});
putExtra()는 Intent 객체에 데이터를 추가로 담는 메서드입니다. Intent는 액티비티, 서비스, 브로드캐스트 리시버 간에 데이터를 전달하는 데 사용되며, putExtra()를 통해 데이터를 키-값 쌍의 형태로 저장합니다.
intent.putExtra(String key, 데이터 값);
- String key: 데이터를 식별하기 위한 이름표. 고유한 이름이어야 합니다.
- 데이터 값: 전달할 실제 데이터. 다양한 타입을 지원합니다.
'백엔드 > Android_JAVA' 카테고리의 다른 글
📱 모바일프로그래밍 - Fragment 📱 (0) | 2024.11.12 |
---|---|
📱 모바일프로그래밍 - 액티비티 생명주기 📱 (0) | 2024.11.12 |
📱 모바일프로그래밍 - 양방향 데이터 전달하기 📱 (0) | 2024.11.12 |
📱 모바일프로그래밍 - (중간- 코드 ) 모르는거 정리 7 📱 (0) | 2024.10.24 |
📱 모바일프로그래밍 - (중간) 모르는거 정리 6 📱 (0) | 2024.10.24 |