Android_7일차

홍성채·2022년 4월 13일
0

Android

목록 보기
11/27
post-thumbnail


  • Intent의 종류

    1. 묵시적 인텐트
      • Target Component의 이름을 지정하지 않음
      • 전화를 걸거나 web browser를 띄울 때 사용
  • 실습하기

    • Layout

    • Web 기능 구현

       btnWeb = findViewById(R.id.btnWeb);
        btnWeb.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.naver.com"));
                   startActivity(intent);
               }
           });
    • Camera 기능 구현

       btnCameara.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                   startActivity(intent);
               }
           });
    • Dial 기능 구현

       btnDial.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:01012341324"));
                   startActivity(intent);
               }
           });
    • Call 기능 구현

       btnCall.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:00000000000"));
                  startActivity(intent);
                    }
          });

      이렇게 할 시 동작이 되지않는다 왜냐하면 사용자의 민감한 기능이나 데이터를 사용해야 하는 경우 권한을 체크하고 요청 후 실행을 해야된다.

    • Call 기능 최종 구현

        btnCall.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:00000000000"));
                   if ( ActivityCompat.checkSelfPermission(getApplicationContext(),
                           Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED ){
                       //권한 요청
                       ActivityCompat.requestPermissions(
                               MainActivity2.this,
                               new String[]{Manifest.permission.CALL_PHONE},
                               0);
                       return;
                   }
                   startActivity(intent);
               }
           });

    1. 명시적 인텐트
      • Target Component의 이름을 지정
      • 동일한 Application 내에 있는 다른 Activity를 실행하는 데 사용
    • 실습하기

      • 메인페이지

         package com.example.myapplication;
        
         import androidx.appcompat.app.AppCompatActivity;
        
         import android.content.Intent;
         import android.os.Bundle;
         import android.view.View;
         import android.widget.Button;
         import android.widget.EditText;
        
         public class FirstActivity extends AppCompatActivity {
             Button btn;
             EditText edt;
             @Override
             protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.activity_first);
        
                 btn = findViewById(R.id.btnfirst);
                 edt = findViewById(R.id.edtData);
        
                 btn.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
                         String data = edt.getText().toString();
                         //Second로 이동 기능 구현
                         Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        
                         //intent 객체에 전달할 데이터 저장
                         intent.putExtra("data",data);
        
                         startActivity(intent);
                         //뒤로가기 눌렀을 시 종료 시키려고
                         finish();
                     }
                 });
             }
         }
      • 이동할 페이지

        package com.example.myapplication;
        
        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 SecondActivity extends AppCompatActivity {
            Button btn;
            TextView tsdata;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_second);
        
                btn = findViewById(R.id.btnsecond);
                tsdata = findViewById(R.id.tsdata);
        
                //Intent 객체 생성
                Intent intent = getIntent();
                tsdata.setText(intent.getStringExtra("data"));
                btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent(SecondActivity.this,FirstActivity.class);
                        startActivity(intent);
                    }
                });
            }
        }
profile
초보 코딩

0개의 댓글