본문 바로가기
App/Android Studio

Android Studio - 암시적 인텐트

by 코젼 2022. 8. 9.
728x90
반응형

2022-08-09(37일차)



💡암시적 인텐트

◾ 암시적 인텐트는 작업을 지정해 그 작업을 수행할 수 있는 앱을 호출하도록 하는 것이다.


📃암시적 인텐트 테스트

◾ 웹 브라우저 열기
◾ 웹 검색
◾ 알람 설정
◾ 전화 화면 열기
◾ 전화 걸기


📝layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/tv_website"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="웹사이트 열기"
            android:textSize="20sp" />

        <EditText
            android:id="@+id/et_website"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_website"
            android:hint="웹주소를 입력하세요" />

        <Button
            android:id="@+id/btn_open"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/et_website"
            android:layout_alignParentRight="true"
            android:text="열기"
            android:textSize="20sp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="100dp">

        <TextView
            android:id="@+id/tv_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/et_website"
            android:text="구글 검색"
            android:textSize="20sp"
            tools:ignore="NotSibling" />

        <EditText
            android:id="@+id/et_search"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_search"
            android:hint="검색어를 입력하세요" />

        <Button
            android:id="@+id/btn_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/et_search"
            android:layout_alignParentRight="true"
            android:text="검색"
            android:textSize="20sp" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="200dp">

        <TextView
            android:id="@+id/tv_alarm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/et_search"
            android:text="알람 설정"
            android:textSize="20sp"
            tools:ignore="NotSibling" />

        <EditText
            android:id="@+id/et_time"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_alarm"
            android:hint="시" />

        <EditText
            android:id="@+id/et_min"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_alarm"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/et_time"
            android:hint="분" />

        <Button
            android:id="@+id/btn_setting"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/et_min"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@id/et_min"
            android:text="설정"
            android:textSize="20sp" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="300dp">

        <TextView
            android:id="@+id/tv_tel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/et_website"
            android:text="전화 화면"
            android:textSize="20sp"
            tools:ignore="NotSibling" />

        <EditText
            android:id="@+id/et_tel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_tel"
            android:hint="전화번호를 입력하세요" />

        <Button
            android:id="@+id/btn_tel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/et_tel"
            android:layout_alignParentRight="true"
            android:text="전화 화면 열기"
            android:textSize="20sp" />
    </RelativeLayout>
</RelativeLayout>

📝MainActivity.java

package com.example.day37;

import androidx.appcompat.app.AppCompatActivity;

import android.app.SearchManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.AlarmClock;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        findViewById(R.id.btn_open).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et = (EditText) findViewById(R.id.et_website);
                String str = et.getText().toString();

                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + str));
                startActivity(intent);
            }
        });

        findViewById(R.id.btn_search).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et = (EditText) findViewById(R.id.et_search);
                String str = et.getText().toString();

                Intent intent = new Intent(Intent.ACTION_WEB_SEARCH)
                        .putExtra(SearchManager.QUERY, str);
                startActivity(intent);
            }
        });


        findViewById(R.id.btn_setting).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et_h = (EditText) findViewById(R.id.et_time);
                String str_h = et_h.getText().toString();

                EditText et_min = (EditText) findViewById(R.id.et_min);
                String str_min = et_min.getText().toString();

                Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
                        .putExtra(AlarmClock.EXTRA_HOUR, Integer.valueOf(str_h))
                        .putExtra(AlarmClock.EXTRA_MINUTES, Integer.valueOf(str_min));
                startActivity(intent);
            }
        });

        findViewById(R.id.btn_tel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et = (EditText) findViewById(R.id.et_tel);
                String str = et.getText().toString();

                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:" + str));
                startActivity(intent);
            }
        });
    }
}

 

728x90
반응형

댓글