Intent

박승현·2022년 4월 21일
0

안드로이드

목록 보기
1/4
post-thumbnail

Intent 란?

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

  • 종류

  • Permission(승인)

앱이 특정 기능을 사용하는 경우 권한 승인

-intent를 이용하면 app호출시 권한 승인 필요 x
(단, 민감한 권한은 x)

▼ manifest

<!-- 전화걸기 권한설정 -->
<uses-permission android:name="android.permission.CALL_PHONE" />

public void onClick(View view) {
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:01089085028"));


    //녹음, 전화걸기, 주소록접근, 위치정보접근 등 사용자의 민감한 기능이나 데이터를
    //사용해야 하는 경우는 아래와 같이 권한을 체크하고 요청하는 로직을 정의해줘야함

    //액티비티에서 실행하는 경우 -> 권한체크
    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);
}

실습

📌 Intent 실습

Intent 를 이용해 버튼마다 기능을 만들자!




📌 Intent 실습2

버튼을 누르면 화면이 이동하게 만들자!

  • mainActivity
package org.techtown.practice1;

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 MainActivity extends AppCompatActivity {

    EditText gotext;
    Button firstbtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gotext = findViewById(R.id.gotext);
        firstbtn = findViewById(R.id.firstbtn);
        
        firstbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String data = gotext.getText().toString();
                //intent(현재 액티비티명.this,화면전환액비티미명.class)
                Intent intent = new Intent(MainActivity.this,MainActivity2.class);
                //intent객체에 전달할 데이터 저장
                intent.putExtra("data",data);
                //intent객체를 실행시키는 메소드
                startActivity(intent);
            }
        });
    }
}

<풀이>

① 버튼을 클릭하면 textview에서 내용 받아와 data에 넣는다 id.getText().toString()

② intent 약간 이동 경로지정 느낌인가?

③ intent 객체에 전달할 데이터 넣어두기? putExtra("이름",데이터값)

④startActivity(intent) //실행

  • mainActivity2
package org.techtown.practice1;

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;

import org.w3c.dom.Text;

public class MainActivity2 extends AppCompatActivity {

    TextView gettext;
    Button secondbtn;

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

        gettext= findViewById(R.id.gettext);
        secondbtn = findViewById(R.id.secondbtn);

        //객체 받아오기?
        Intent intent = getIntent();
        gettext.setText(intent.getStringExtra("data"));

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

                Intent intent  = new Intent(MainActivity2.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

※버튼을 누르기 전, 값을 받아와야 한다

Intent intent = getIntent();
gettext.setText(intent.getStringExtra("data"));

① 받아오는 intent 객체 생성
② 앞에 mainactivity에서 data에 값을 넣어뒀으니 받아와서 gettext에 setText()한다

📌 Intent 실습3

로그인 성공하고 여부에따라 성공,실패 출력

1-1) kakaologin창 만들고 EditView안에 이메일,비번 입력받기 ( 값 저장)
1-2) 로그인 버튼 클릭시 값 전달
2) 전달 받은 값 성공시, 로그인 성공페이지 아니면 실패 페이지? >이메일 + 로그인 성공!

  • kakaologin
package org.techtown.practice1;

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 kakaologin extends AppCompatActivity {

    EditText edtemail,edtpw;
    Button loginbtn;


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

        edtemail = findViewById(R.id.edtemail);
        edtpw = findViewById(R.id.edtpw);
        loginbtn = findViewById(R.id.loginbtn);

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

                String email = edtemail.getText().toString();
                String pw = edtpw.getText().toString();

                Intent intent = new Intent(kakaologin.this,kakaologinresult.class);
                intent.putExtra("email",email);
                intent.putExtra("pw",pw);


                startActivity(intent);

            }
        });


    }
}

<풀이>

① email,pw의 변수를 만들어 editview 안에 작성된 내용이 gettext되게 한다
※문자열로 바꾼다(toString)

String email = edtemail.getText().toString();
String pw = edtpw.getText().toString();

② Intent 객체를 생성하고 어디서 어디로 이동할지 알려준다 > 명시적 intent

Intent intent = new Intent(kakaologin.this,kakaologinresult.class);

③ intent 객체에 emailpw라는 이름으로 각각 putExtra 시켜준다 ( 저장개념?)

intent.putExtra("email",email);
intent.putExtra("pw",pw);

④ intent 시작

startActivity(intent);
  • kakaologinresult
package org.techtown.practice1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class kakaologinresult extends AppCompatActivity {

 TextView resulttext;

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

        resulttext = findViewById(R.id.resulttext);

        Intent intent = getIntent();
        String email =  intent.getStringExtra("email");
        String pw = intent.getStringExtra("pw");

        if(email.equals("smhrd") && pw.equals("1234")){
            resulttext.setText("로그인 성공");

        }else{
            resulttext.setText("로그인 실패");
        }


    }
}

<풀이>

① intent 객체 받아오기

Intent intent = getIntent();

② 받아온걸 email,pw라는 문자열변수에 저장

String email =  intent.getStringExtra("email");
String pw = intent.getStringExtra("pw");

③ 로그인 결과 if,else문

if(email.equals("smhrd") && pw.equals("1234")){
    resulttext.setText("로그인 성공");

}else{
    resulttext.setText("로그인 실패");
}

0개의 댓글