희원96
코딩 공부 일기
희원96
전체 방문자
오늘
어제
  • 다이어리 (94)
    • 일상 (2)
      • #.일기 (2)
      • 정보처리기사 (0)
    • 코딩 공부 (90)
      • Python (11)
      • Java (12)
      • DB (18)
      • Arduino (5)
      • HTML,CSS (7)
      • JSP, Servlet (14)
      • Javascript (8)
      • jQuery (2)
      • Spring (1)
      • Android (8)
      • ML (4)
      • React (0)
    • 프로젝트 (1)
      • 미니프로젝트 (1)
      • 1차프로젝트 (0)
      • 2차프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개발 공부 일기

인기 글

태그

  • 스프링
  • DB
  • arduino
  • 스마트인재개발원
  • Android
  • 자바스크립트
  • Python
  • jQuery
  • 화이팅
  • 자바
  • 아두이노
  • Spring
  • 파이썬
  • JavaScript
  • CSS
  • JS
  • Servlet
  • HTML
  • 머신러닝
  • 안드로이드
  • Database
  • 제이쿼리
  • java
  • JavaFestival
  • ml
  • JSP
  • Ajax
  • 데이터베이스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
희원96

코딩 공부 일기

[Android] Activity & intent
코딩 공부/Android

[Android] Activity & intent

2022. 7. 12. 17:50

 

Activity & intent

 

intent 란?

- 하나의 액티비티가 다른 액티비티를 실행시킬 수 있는 메시지 시스템

-인텐트는 실행하는 방법에 따라 ' 명시적 인텐트와'와 '묵시적 인텐트'로 구분

묵시적 intent 실습

★권한 부여하기★

 <!-- Intent 기능에 필요한 권한 승인받기! -->
    <uses-permission android:name="android.permission.CALL_PHONE" />
    if(ContextCompat.checkSelfPermission(MainActivity.this,
                        Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
                    // 권한 요청하기
                    ActivityCompat.requestPermissions(MainActivity.this,
                            new String[]{Manifest.permission.CALL_PHONE},0);
                }
package com.example.ex_0712;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button btn_web, btn_camera, btn_dial, btn_call;

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

        btn_web = findViewById(R.id.btn_web);
        btn_camera = findViewById(R.id.btn_camera);
        btn_dial = findViewById(R.id.btn_dial);
        btn_call = findViewById(R.id.btn_call);

        btn_web.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //웹으로 이동하기 위한 주소 지정!
                Uri uri = Uri.parse("https://www.naver.com");
                //Intent 객체 생성!
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);

                //
                startActivity(intent);


            }
        });

        btn_camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                startActivity(intent);
            }
        });

        btn_dial.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Uri uri = Uri.parse("tel:010-1234-5678");
                Intent intent = new Intent(Intent.ACTION_DIAL, uri);

                startActivity(intent);
            }
        });

        btn_call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // call 기능은 권한을 가지고 있어야만 Intent를 통해 사용할 수 있다!
                // 관련된 권한은 어플자체에 지정을 해야하므로 AndroidManifest파일에 권한 지정하기
                Uri uri = Uri.parse("tel:010-1234-5678");
                Intent intent = new Intent(Intent.ACTION_CALL,uri);

                // call에 대한 권한을 받은적이 있는지 없는지 판단하에
                // 받은적이 없다면 직접 권한 받아오기!
                if(ContextCompat.checkSelfPermission(MainActivity.this,
                        Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
                    // 권한 요청하기
                    ActivityCompat.requestPermissions(MainActivity.this,
                            new String[]{Manifest.permission.CALL_PHONE},0);
                }
                startActivity(intent);
            }
        });
    }
}

 

 

명시적 intent 실습

 

package com.example.ex_0712;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity2 extends AppCompatActivity {

    Button btn_next,btn_next2;
    EditText edt_data;

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

        btn_next = findViewById(R.id.btn_next);
        edt_data = findViewById(R.id.edt_data);

        //양방향을 위한 View
        btn_next2 = findViewById(R.id.btn_next2);

        //btn_next 클릭시 NextActivity로 이동하기!
        btn_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // 입력된 데이터 가져오기!
                String data = edt_data.getText().toString();
                // 단방향의 Intent 생성하기
                // Intent(현재 Activity의 정보, 넘어갈 Activity 정보)
                Intent intent = new Intent(MainActivity2.this, NextActivity2.class);

                // Intent에 포함할 데이터 저장하기
                // 일종의 태그값에 원하는 값을 담아서 전달
                intent.putExtra("data",data);

                //Intent 실행명령
                startActivity(intent);

                // 현재 띄워져 있는 화면을 종료하는 메소드
                finish();
            }
        });

        btn_next2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // getApplicationConetxt() == MainActivity2.this 와 동일한 기능!
                Intent intent = new Intent(getApplicationContext(), NextActivity2.class);

                // 단방향으로 intent --> startActivity()
                // 양방향으로 intent --> startActivityForResult()
                    startActivityForResult(intent, 0);
            }
        });
    } // OnCreate()
    //통신의 결과값에 따른 처리 메소드 생성! -> 제대로 통신이 되었을 경우!

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == 0){
            if(resultCode == RESULT_OK){
                //요청된 코드와 요청의 결과가 OK 라면! -> 통신이 잘 됐다!
                Toast.makeText(getApplicationContext(), "양방향 성공!", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(getApplicationContext(), "양방향 실패...!", Toast.LENGTH_SHORT).show();
            }
        }
    }
}
package com.example.ex_0712;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class NextActivity2 extends AppCompatActivity {

    TextView txt_data;
    Button btn_main;

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

        txt_data = findViewById(R.id.txt_data);
        btn_main = findViewById(R.id.btn_main);

//        // 저장되어 넘어온 Intent에 접근하기!
//        Intent intent2= getIntent();
//        String data = intent2.getStringExtra("data");
//
//        //한줄로 intent 내용 가져오는 방법!
////        String data = getIntent().getStringExtra("data");
//
//        txt_data.setText(data);

        btn_main.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //양방향의 intent를 사용할때 결과에 대하여
                //돌려보내 줄 수 있는 메소드 -> 매개변수로 통신에 대한 신호값을 보내준다
                setResult(RESULT_OK);
                finish();
            }
        });
    }
}
    '코딩 공부/Android' 카테고리의 다른 글
    • [Android]Adapter 실습
    • [Android] Adapter View
    • [Android] 숫자 게임 만들기
    • [Android]Onclick 실습
    희원96
    희원96
    개발 공부

    티스토리툴바