코드네임 :

📱 모바일프로그래밍 - 암시적 인텐트📱 본문

백엔드/Android_JAVA

📱 모바일프로그래밍 - 암시적 인텐트📱

비엔 Vien 2024. 11. 12. 17:06

[ 암시적 인텐트 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: 데이터를 식별하기 위한 이름표. 고유한 이름이어야 합니다.
  • 데이터 값: 전달할 실제 데이터. 다양한 타입을 지원합니다.