728x90
반응형
이전 내용
[Android] 인텐트 (Intent) 2 - 명시적 인텐트 예제
이전 내용 [Android] 인텐트(Intent) - 1: 명시적 인텐트이전 내용 [Android] 위젯 - 평점 (RatingBar)이전 내용 [Android] 컴파운드 버튼 3 - 토글 버튼이전 내용 [Android] 컴파운드 버튼 2 - 라디오 버튼이전 내용
puppy-foot-it.tistory.com
암시적 인텐트 예제
Q. 버튼 하나당 한 가지 구현을 하는 총 4가지 버튼 생성하기
각 버튼에는 기능이 한 가지씩 구현되어야 하는데, 해당 기능들은 각각
- 전화걸기
- 지도보기
- 웹브라우저 (인터넷 접속)
- 연락처 보기
[activity_main.xml]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전화걸기"
android:onClick="onClick" />
<Button
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="지도보기"
android:onClick="onClick" />
<Button
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="웹브라우저"
android:onClick="onClick" />
<Button
android:id="@+id/contact"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="연락처 보기"
android:onClick="onClick" />
</LinearLayout>
[MainActivity.java]
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
Intent intent = null;
int id = view.getId();
if (id == R.id.web) {
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://google.com"));
} else if (id == R.id.call) {
intent = new Intent(Intent.ACTION_DIAL,
Uri.parse("tel: (+82)12345678"));
} else if (id == R.id.map) {
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("geo:37.30,127.2?z=10"));
} else if (id == R.id.contact) {
intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("content://contacts/people/"));
}
if (intent != null) {
startActivity(intent);
}
}
}
UI 설정:
- onCreate(Bundle savedInstanceState): 액티비티가 생성될 때 호출되는 메서드로, UI 레이아웃 설정.
- setContentView(R.layout.activity_main);: activity_main.xml 레이아웃 파일을 이 액티비티에 적용.
onClick 메서드:
- 사용자가 특정 버튼을 클릭할 때 호출되는 메서드.
- public void onClick(View view): 메서드의 매개변수로 클릭된 버튼의 뷰 객체를 받는다.
Intent 생성 및 시작:
- Intent intent = null;: 클릭된 버튼의 ID에 따라 적절한 Intent 생성.
- 여러 버튼 클릭에 따라 다음과 같은 행동을 정의:
- 웹 브라우저 열기: R.id.web 클릭 시 구글 웹사이트를 여는 Intent 생성.
- 전화 걸기: R.id.call 클릭 시 전화 다이얼러를 여는 Intent 생성.
- 지도 보기: R.id.map 클릭 시 특정 위치의 지도를 여는 Intent 생성.
- 연락처 열기: R.id.contact 클릭 시 연락처 목록을 여는 Intent 생성.
Intent가 null이 아닐 때:
- if (intent != null) { startActivity(intent); }: 생성된 Intent가 유효한 경우, 새로운 액티비티 시작.
그리고, manifests 폴더의 AndroidManifest.xml 파일의 상단에 해당 코드를 추가한다.
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
1. uses-feature
이 태그는 애플리케이션이 특정 하드웨어 기능을 사용할 수 있음을 명시.
- <uses-feature android:name="android.hardware.telephony" android:required="false" />
- 전화 기능을 사용할 수 있음을 나타낸다.
- android:required="false"로 설정되어 있어, 이 기능이 없어도 애플리케이션이 작동할 수 있음을 명시.
- <uses-feature android:name="android.hardware.camera" android:required="false" />
- 카메라 기능을 사용할 수 있음을 나타낸다.
- 마찬가지로 required가 false이므로, 카메라가 없더라도 앱은 사용 가능.
2. uses-permission
이 태그는 애플리케이션이 특정 기능을 사용하기 위해 필요한 권한 요청.
- <uses-permission android:name="android.permission.CALL_PHONE" />
- 전화 전화를 걸기 위해 필요한 권한.
- <uses-permission android:name="android.permission.CAMERA" />
- 카메라에 접근하기 위해 필요한 권한.
- <uses-permission android:name="android.permission.READ_CONTACTS" />
- 사용자의 연락처에 접근하기 위한 권한.
- <uses-permission android:name="android.permission.INTERNET" />
- 인터넷에 접근하기 위한 권한으로, 네트워크 연결을 통해 데이터 전송 및 웹 페이지를 열기 위해 필요.
[실행]
1. 전화걸기
2. 지도보기
3. 인터넷 접속
4. 연락처 보기
다음 내용
728x90
반응형
'Java > Java Android' 카테고리의 다른 글
[Android] 인텐트 (Intent) 2 - 명시적 인텐트 예제 (0) | 2025.04.30 |
---|---|
[Android] 인텐트(Intent) - 1: 명시적 인텐트 (0) | 2025.04.30 |
[Android] 위젯 - 평점 (RatingBar) (1) | 2025.04.30 |
[Android] 컴파운드 버튼 3 - 토글 버튼 (0) | 2025.04.30 |
[Android] 컴파운드 버튼 2 - 라디오 버튼 (0) | 2025.04.30 |