1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void onClick(View v) {
                // TODO Auto-generated method stub
                String phoneNum = phoneNumEdt.getText().toString();
                String msg = msgEdt.getText().toString();
                Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
                intent.putExtra("phoneNum", phoneNum);
                intent.putExtra("msg", msg);
//                startActivity(intent);//액티비티 그냥 호출
                startActivityForResult(intent, 1001);
                //호출하는 엑티비티로부터 응답을 받기 위해 코드를 지정해서 호출
                //호출했던 엑티비티가 종료되고 이 엑티비티로 돌아올때 ↓
            }
        });        //호출할때 지정해줬던 코드값이 requestCode파라미터에 들어오면서
    }            //onActivityResult함수가 호출됨
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1001)
        {
            Toast.makeText(this"Another로부터 돌아옴"0).show();
        }
    }
cs



1
2
3
4
5
6
7
Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        String phoneNum = bundle.getString("phoneNum");
        String msg = bundle.getString("msg");
        Log.d("DEVEL", phoneNum);
        Log.d("DEVEL", msg); //log에서 확인하는 방법
//배포할때는 지우기
    }

cs



1
2
3
setContentView(R.layout.activity_another);
        //매개변수로 받은 레이아웃 xml자원에 따라 모든 위젯을 객체화하고 + 
        //화면에 그리는 역할
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ok_btn.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                setResult(RESULT_OK);  // 현재 엑티비티를 호출했던 엑티비티로 돌아갈때 결과 코드를 세팅함
                finish();               // 해당 상수는 Activity클래스에 정의되 있는 상수이고 맘대로 아무 숫자나 써도됨
            }    //엑티비티를 종료시키는 메소드
        });
        cancel_btn.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                setResult(RESULT_CANCELED);
                finish();
            }
        });
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1001){
            if(resultCode == RESULT_OK)
            {
                Toast.makeText(this"Another로부터 확인으로 돌아옴"0).show();
            }
            if(resultCode == RESULT_CANCELED)
            {
                Toast.makeText(this"Another로부터 취소로 돌아옴"0).show();
            }
        }
    }
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//폰번이랑 문자내용으로 이뤄진 모델클래스를 만들어서
//하나의 객체로 묶어서 인텐트에 실어 보냅시당
public class SmsMsg {
    private String phoneNum;
    private String msg;        
    public String getPhoneNum() {
        return phoneNum;
    }
    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    
    
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
public class SmsMsg implements Parcelable{
 
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        dest.writeString(phoneNum); dest.writeString(msg);
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//편의를 위해 만든 메소드의 이름이 꼭 이형태일 필요는 없음
    public void readFromParcel(Parcel parcel)
    {
        phoneNum = parcel.readString();
        msg = parcel.readString();
    }
    
    public SmsMsg(){
        
    }
    public SmsMsg(Parcel parcel){
        readFromParcel(parcel);
    }
    public static final Parcelable.Creator<SmsMsg> CREATOR = new Creator<SmsMsg>() {
        
        @Override
        public SmsMsg[] newArray(int size) {
            // TODO Auto-generated method stub
            return new SmsMsg[size];
        }
        
        @Override
        public SmsMsg createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
        //매개변수로 넘어온 Parcel객체로부터 순서대로 읽어서 각각 멤버에 세팅하고 만든 모델객체를 리턴    
//            SmsMsg data = new SmsMsg();
//            data.setPhoneNum(source.readString());
//            data.setMsg(source.readString());
//            return data;
            
            return new SmsMsg(source);
        }
    };
cs

1
2
3
4
5
6
7
8
9
10
11
12
String phoneNum = phoneNumEdt.getText().toString();
                String msg = msgEdt.getText().toString();
                Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
                SmsMsg smsMsg = new SmsMsg();
                smsMsg.setPhoneNum(phoneNum);
                smsMsg.setMsg(msg);
                intent.putExtra("SmsMsg", smsMsg);
                
//                intent.putExtra("phoneNum", phoneNum);
//                intent.putExtra("msg", msg);
//                startActivity(intent);//액티비티 그냥 호출
                startActivityForResult(intent, 1001);
cs

1
2
3
4
5
6
7
8
Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
//        String phoneNum = bundle.getString("phoneNum");
//        String msg = bundle.getString("msg");
        SmsMsg smsMsg = (SmsMsg) bundle.get("SmsMsg");
        
        phoneNum_View.setText("전화번호 : " + smsMsg.getPhoneNum());
        main_msg_View.setText("메시지 내용\n"+smsMsg.getMsg())
cs


버튼클릭이벤트 다른방법

1
2
3
    public void registerBtnClick(View v){
        Toast.makeText(this"이벤트 처리 이렇게도 되징"0).show();
    }
cs


' IOT 기반 응용 SW과정 > Android, Arduino' 카테고리의 다른 글

Day92  (0) 2016.07.28
Day91  (0) 2016.07.27
Day89 안드로이드 엑티비티 전환  (0) 2016.07.25
Day88  (0) 2016.07.22
Day87  (0) 2016.07.21

안드로이드 구성요소

- 엑티비티 : 하나의 화면 구성단위 이면서 명령처리흐름을 가짐
- 서비스 : 화면없이 명령처리 흐름을 가짐
- 컨텐트프로바이더
- 브로드케스트 리시버

- 인텐트 : 안드로이드 구성요소 간 데이터를 주고 받기 위한 매개체


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        btn1.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //intent : 어플 구성요소 간 데이터 전달 매개체
                //우리가 보내고자 하는 인텐트는
                //SecondActivity야 니가 시작할 차례다 라는 의미의 intent세팅해야됨
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                
                startActivity(intent);
            }
        });
        
        btn2.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //action이 dial인 구성요소 앞으로 암시적 인텐트전달
                Intent intent = new Intent(Intent.ACTION_DIAL);
                startActivity(intent);
            }
        });
    }
cs


1
2
3
4
5
6
7
        <activity
            android:name="어벙라ㅓㅁㄴ레ㅜㅁㄴㅇㄹ.SecondActivity">
            <intent-filter >
                <action android:name="android.intent.action.DIAL"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
cs

Activity호출 시의 flag

- FLAG_ACTIVITY_SINGLE_TOP : 엑티비티를 생성할 때 이미 생성된 엑티비티가 있으면 그 엑티비티를 그대로 사용

1
2
3
4
5
public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(SecondActivity.this, SecondActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                startActivity(intent);
cs

- FLAG_ACTIVITY_NO_HISTORY : 처음 이후에 실행된 엑티비티는 엑티비티 스택에 추가되지 않음



[Android] Intent 활용 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// 웹페이지 띄우기
Uri uri = Uri.parse("http://www.google.com");
Intent it  = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
 
 
// 구글맵 띄우기
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = new Intent(Intent.Action_VIEW,uri);
startActivity(it);
 
 
// 구글 길찾기 띄우기
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=출발지주소&daddr=도착지주소&hl=ko");
Intent it = new Intent(Intent.ACTION_VIEW,URI);
startActivity(it);
 
 
// 전화 걸기
Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);  
startActivity(it); 
 
 
Uri uri = Uri.parse("tel.xxxxxx");
Intent it = new Intent(Intent.ACTION_CALL,uri);
// 퍼미션을 잊지 마세요. <uses-permission id="android.permission.CALL_PHONE" />
 
 
// SMS/MMS 발송
Intent it = new Intent(Intent.ACTION_VIEW);   
it.putExtra("sms_body""The SMS text");   
it.setType("vnd.android-dir/mms-sms");   
startActivity(it); 
 
 
// SMS 발송
Uri uri = Uri.parse("smsto:0800000123");   
Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
it.putExtra("sms_body""The SMS text");   
startActivity(it); 
 
 
// MMS 발송
Uri uri = Uri.parse("content://media/external/images/media/23");   
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra("sms_body""some text");   
it.putExtra(Intent.EXTRA_STREAM, uri);   
it.setType("image/png");   
startActivity(it);
 
 
// 이메일 발송
Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
 
 
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");   
it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
it.setType("text/plain");   
startActivity(Intent.createChooser(it, "Choose Email Client")); 
 
 
Intent it = new Intent(Intent.ACTION_SEND);     
String[] tos = {"me@abc.com"};     
String[] ccs = {"you@abc.com"};     
it.putExtra(Intent.EXTRA_EMAIL, tos);     
it.putExtra(Intent.EXTRA_CC, ccs);     
it.putExtra(Intent.EXTRA_TEXT, "The email body text");     
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     
it.setType("message/rfc822");     
startActivity(Intent.createChooser(it, "Choose Email Client"));  
 
 
// extra 추가하기
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");   
sendIntent.setType("audio/mp3");   
startActivity(Intent.createChooser(it, "Choose Email Client"));
 
 
// 미디어파일 플레이 하기
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
 
 
Uri uri = Uri.withAppendedPath(
  MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");   
Intent it = new Intent(Intent.ACTION_VIEW, uri);   
startActivity(it); 
 
 
// 설치 어플 제거
Uri uri = Uri.fromParts("package", strPackageName, null);   
Intent it = new Intent(Intent.ACTION_DELETE, uri);   
startActivity(it);
 
 
// APK파일을 통해 제거하기
Uri uninstallUri = Uri.fromParts("package""xxx"null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
 
 
// APK파일 설치
Uri installUri = Uri.fromParts("package""xxx"null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
 
 
// 음악 파일 재생
Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);
 
 
// 첨부파일을 추가하여 메일 보내기
Intent it = new Intent(Intent.ACTION_SEND);  
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");  
sendIntent.setType("audio/mp3");  
startActivity(Intent.createChooser(it, "Choose Email Client"));
 
 
// 마켓에서 어플리케이션 검색
Uri uri = Uri.parse("market://search?q=pname:pkg_name");  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(it);  
// 패키지명은 어플리케이션의 전체 패키지명을 입력해야 합니다.
 
 
// 마켓 어플리케이션 상세 화면
Uri uri = Uri.parse("market://details?id=어플리케이션아이디");  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(it);
// 아이디의 경우 마켓 퍼블리싱사이트의 어플을 선택후에 URL을 확인해보면 알 수 있습니다.
 
 
// 구글 검색
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);
cs


' IOT 기반 응용 SW과정 > Android, Arduino' 카테고리의 다른 글

Day91  (0) 2016.07.27
Day90  (0) 2016.07.26
Day88  (0) 2016.07.22
Day87  (0) 2016.07.21
Day86  (0) 2016.07.20

+ Recent posts