728x90
오늘은 앱에 번호를 입력 후 전화 앱에서 전화를 걸거나 번호가 입력된 화면을 띄우는 예시를 보여드리겠습니다
manifest 정보 추가
manifest에 android.hardware.telephony <uses-feature> 와 call_phone <uses-permission>을 추가해주세요
call_phone 권한은 전화 걸기 기능 사용시 필요합니다
레이아웃 xml 파일 코드(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/editTextPhoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="전화번호 입력"
android:inputType="phone"/>
<Button
android:id="@+id/buttonDial"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전화 앱 이동하기"/>
<Button
android:id="@+id/buttonCall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전화 걸기"/>
</LinearLayout>
액티비티 자바 코드
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CALL_PERMISSION = 1;
private EditText editTextPhoneNumber;
private Button buttonDial;
private Button buttonCall;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextPhoneNumber = findViewById(R.id.editTextPhoneNumber); //전화번호 입력 EditText 뷰
buttonDial = findViewById(R.id.buttonDial); //전화 앱 이동 버튼
buttonCall = findViewById(R.id.buttonCall); //전화 걸기 버튼
buttonDial.setOnClickListener(v -> {
String phoneNumber = editTextPhoneNumber.getText().toString();
//전화번호 입력창이 비어있는지 체크
//입력한 번호가 있다면 전화 앱 이동
if (!phoneNumber.isEmpty()) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
startActivity(intent);
}
});
buttonCall.setOnClickListener(v -> {
String phoneNumber = editTextPhoneNumber.getText().toString();
//전화번호 입력창이 비어있는지 체크
//입력한 번호가 있다면 전화 걸기
if (!phoneNumber.isEmpty()) {
PhoneCall(phoneNumber);
}
});
}
private void PhoneCall(String phoneNumber) {
//전화 걸기 메서드
//전화 걸기 권한이 있는지 체크
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// 권한이 없는 경우 권한 요청
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL_PERMISSION);
} else {
// 권한이 있는 경우 입력한 번호로 전화걸기
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
startActivity(intent);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// 권한 요청에 대한 앱 사용자의 응답 결과를 콜백받는 메서드
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CALL_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 권한이 허용된 경우, 전화 걸기 진행
String phoneNumber = editTextPhoneNumber.getText().toString();
PhoneCall(phoneNumber);
} else {
// 권한이 거부된 경우, 사용자에게 권한이 필요함을 알림
Toast.makeText(this, "전화 걸기 권한이 필요합니다.", Toast.LENGTH_SHORT).show();
}
}
}
}
실행 영상
전화 앱에서 전화를 걸거나 번호가 입력된 화면을 띄우는 것을 확인할 수 있습니다
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android]네이버 지도 앱, 모바일 웹에서 특정 좌표 띄우기 (0) | 2024.07.03 |
---|---|
[JAVA][Android] Media3 사용해서 동영상 재생하기 (0) | 2024.07.02 |
[JAVA][Android] MediaPlayer로 음악 재생하기 (0) | 2024.06.26 |
[JAVA][Android] 이미지 서버에 업로드하기 (0) | 2024.06.24 |
[JAVA][Android]Gson 라이브러리 활용하여 JSON 문자열 다루기 (0) | 2024.06.19 |