๊ด€๋ฆฌ ๋ฉ”๋‰ด

Welcome! Everything is fine.

[Android] ์ธํ…ํŠธ(Intent) ์‚ดํŽด๋ณด๊ธฐ ๋ณธ๋ฌธ

Android

[Android] ์ธํ…ํŠธ(Intent) ์‚ดํŽด๋ณด๊ธฐ

๊ฐœ๋ฐœ๊ณฐ๋ฐœ 2022. 3. 10.
728x90

๐Ÿ“Œ ์ธํ…ํŠธ(Intent)๋ž€?

  • ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šฐ๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ
  • ์ž‘์—… ์ˆ˜ํ–‰์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ผ์ข…์˜ ๋ช…๋ น์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ˆ˜๋‹จ
  • ์•ฑ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ•ด์•ผํ•  ์ผ์„ ์ง€์ •ํ•˜๋Š” ์ˆ˜๋‹จ

๐Ÿ“Œ ์ธํ…ํŠธ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ

  • ์•ก์…˜(Action) : ์ˆ˜ํ–‰ํ•  ๊ธฐ๋Šฅ
  • ๋ฐ์ดํ„ฐ(Data) : ์•ก์…˜์ด ์ˆ˜ํ–‰๋  ๋Œ€์ƒ์˜ ๋ฐ์ดํ„ฐ
  • ์‹œ์Šคํ…œ์ด ์ธํ…ํŠธ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ํฌ๋งท์„ ํ™•์ธ ํ›„, ์ ์ ˆํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์•„ ๋„์›Œ์ฃผ๊ธฐ๋„ ํ•œ๋‹ค.
  • ์ธํ…ํŠธ ๊ฐ์ฒด๋Š” ์•ก์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ˆ˜๋กœ ํ•˜์—ฌ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ธํ…ํŠธ๋‚˜ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.
  • ์˜ˆ) ์ธํ…ํŠธ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ACTION_VIEW(์•ก์…˜)์™€ ์›นํŽ˜์ด์ง€ ์ฃผ์†Œ(๋ฐ์ดํ„ฐ)๋ฅผ ์ „๋‹ฌ → ๋‹จ๋ง ์•ˆ์— ์„ค์น˜๋œ ์›น๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์ด ๋œจ๋ฉด์„œ ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

โœ” ์•ก์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ

์†์„ฑ ์„ค๋ช…
ACTION_DIAL tel:01012345678 ์ฃผ์–ด์ง„ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ „ํ™”๊ฑธ๊ธฐ ํ™”๋ฉด์„ ๋ณด์—ฌ์คŒ.
ACTION_VIEW tel:01012345678 ์ฃผ์–ด์ง„ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ „ํ™”๊ฑธ๊ธฐ ํ™”๋ฉด์„ ๋ณด์—ฌ์คŒ.
URI ๊ฐ’์˜ ์œ ํ˜•์— ๋”ฐ๋ผ VIEW ์•ก์…˜์ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ํ•จ. 
ACTION_EDIT content://contacts/people/2 ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ์ •๋ณด ์ค‘์—์„œ
ID๊ฐ’์ด 2์ธ ์ •๋ณด๋ฅผ ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ํ™”๋ฉด์„ ๋ณด์—ฌ์คŒ.
ACTION_VIEW content://contacts/people ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ.

๐Ÿ“Œ ๋ช…์‹œ์  ์ธํ…ํŠธ(Explicit Intent)

์ธํ…ํŠธ์— ํด๋ž˜์Šค ๊ฐ์ฒด๋‚˜ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœํ•  ๋Œ€์ƒ์„ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

๐Ÿ“Œ ์•”์‹œ์  ์ธํ…ํŠธ(Implicit Intent)

์•ก์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ–ˆ์ง€๋งŒ ํ˜ธ์ถœํ•  ๋Œ€์ƒ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์•”์‹œ์  ์ธํ…ํŠธ๋Š” ์•ก์…˜๊ณผ ๋ฐ์ดํ„ฐ ์™ธ์—๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์†์„ฑ์ด ์žˆ๋‹ค.

  • ๋ฒ”์ฃผ(Category) : ์•ก์…˜์ด ์‹คํ–‰๋˜๋Š”๋ฐ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
  • ํƒ€์ž…(Type) : ์ธํ…ํŠธ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ์˜ MIME ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ(Component) : ์ธํ…ํŠธ์— ์‚ฌ์šฉ๋  ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.
  • ๋ถ€๊ฐ€ ๋ฐ์ดํ„ฐ (Extra Data) : ์ธํ…ํŠธ์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ฒˆ๋“ค ๊ฐœ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

๐Ÿ“Œ ์ธํ…ํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ

โœ” ์•ก์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด ๋‹ค๋ฅธ ์•ฑ์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šฐ๋Š” ๊ฒฝ์šฐ

๋‹ค์Œ ์•ฑ ์‹คํ–‰ํ™”๋ฉด์€ '์ „ํ™”๊ฑธ๊ธฐ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž…๋ ฅ์ƒ์ž์— ์ž…๋ ฅํ•œ ์ „ํ™”๋ฒˆํ˜ธ๋กœ ์ „ํ™”๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ์ด๋‹ค.

MainActivity.java์˜ ์†Œ์Šค์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž…๋ ฅ์ƒ์ž์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ์ธํ…ํŠธ์˜ ํŒŒ๋ฆฌ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

import androidx.activity.result.ActivityResultLauncher;
import androidx.appcompat.app.AppCompatActivity;

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

public class MainActivity extends AppCompatActivity {
    ActivityResultLauncher<Intent> activityResultLauncher;
    EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = editText.getText().toString();
                Intent intent =new Intent(Intent.ACTION_VIEW, Uri.parse(data));
                startActivity(intent);
            }
        });
    }
}

โœ” ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šฐ๋Š” ๊ฒฝ์šฐ

์ž˜ ์•ˆ๋œ๋‹ค...์ข€ ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.