본문 바로가기

Android

암시적 인텐트

특정 구성요소를 지정하지 않고 수행할 작업(Action)을 지정하면, 해당 작업을 처리할 수 있는 구성요소가 선택되어 작업을 수행. 예를 들어, 인텐트에 전화번호를 설정하고 전화를 거는 작업(Action)을 지정하면, 전화걸기 앱이 이러한 작업을 받아서 전화를 걸어줌.

* 암시적 인텐트가 동작하는 과정

1. 액티비티 A가 어떤 작업이 설정된 인텐트를 생성하여 startActivity()에 전달한다.

2. 안드로이드 시스템이 해당 인텐트와 일치하는 인텐트 필터를 찾아 모든 앱을 검색한다.

3. 일치하는 것을 찾으면, 시스템이 일치하는 액티비티(Activity B)를 시작하기 위해 해당 액티비티의 onCreate() 메서드를 호출하여 인텐트를 전달한다.

 

1. MainAcitvity.java

package com.example.impliteintentexam;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

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 dialPhone(View view) {
        EditText editText=findViewById(R.id.phone_number_edit);
        dialPhoneNumber(editText.getText().toString());

    }

    private void dialPhoneNumber(String phonNumber) {
        Intent intent=new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:"+phonNumber));
        //태블릿 같은 경우는 전화걸 수 없으므로 전화가 있는 경우에만 실행
        if(intent.resolveActivity(getPackageManager())!=null){
            startActivity(intent);
        }
    }
}

2. activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="horizontal">

    <EditText
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:hint="전화번호를 입력해주세요"
        android:id="@+id/phone_number_edit"
        android:inputType="phone"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="dialPhone"
        android:text="전화걸기"

        />
</LinearLayout>

 

'Android' 카테고리의 다른 글

인텐트 사용방법  (0) 2020.06.24
안드로이드 4대 구성요소  (0) 2020.05.24
Activity 간 전달  (0) 2020.05.24
Gradle Script  (0) 2020.05.24
res : 리소스  (0) 2020.05.24