브로드캐스트 : OS가 시스템의 상태 정보를 모든 어플리케이션에 알리는 방송


브로드캐스트리시버 : 브로드캐스트를 수신하기 위한 어플리케이션의 구성요소


브로드캐스트리시버 만드는 방법

- 브로드캐스트리시버클래스를 상속받는 클래스 작성
- 해당 클래스를 매니패스트에 구성요소로 등록
- 해당 클래스에 onReceive구현


1
2
3
4
5
6
7
8
9
10
        <receiver 
            android:name=".MyBroadcastReceiver">
            <intent-filter >
 
            브로드캐스트 리시버 정적으로 등록하는 방법
            구현한 브로드캐스트리시버 클래스를 receiver태그로 등록하고
            수신할 액션을 intent-filter에 정의
 
            </intent-filter>
        </receiver>
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        BroadcastReceiver br = new MyBroadcastReceiver();
        registerReceiver(br, new IntentFilter(Intent.ACTION_SCREEN_OFF));
        registerReceiver(br, new IntentFilter(Intent.ACTION_SCREEN_ON));

        //동적으로 등록하는 방법(manifest엔 없어도됨)
        //동적으로하면,, 브로드캐스트리시버를 넣었다뺏다 할 수 있고
//        몇몇 액션에 대해서는 보안상의 이유로 동적으로만 등록 가능
    }
}
cs

1
2
3
4
5
6
            <intent-filter >
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter> 문자수신액션
 
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
 
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
34
35
36
37
38
39
40
41
42
import java.util.Date;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
 
public class MyBroadcastReceiver extends BroadcastReceiver{
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Bundle bundle = intent.getExtras();
        Object[] messages = (Object[]) bundle.get("pdus");
        SmsMessage[] smsMessage = new SmsMessage[messages.length];
 
        for(int i = 0; i < messages.length; i++) {
            // PDU 포맷으로 되어 있는 메시지를 복원합니다.
            smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);
        }
 
        // SMS 수신 시간 확인
        Date curDate = new Date(smsMessage[0].getTimestampMillis());
        Log.d("문자 수신 시간", curDate.toString());
 
        // SMS 발신 번호 확인
        String origNumber = smsMessage[0].getOriginatingAddress();
 
        // SMS 메시지 확인
        String message = smsMessage[0].getMessageBody().toString();
        Log.d("문자 내용""발신자 : "+origNumber+", 내용 : " + message);
        
        SmsManager smsManager = SmsManager.getDefault();
        String sendTo = "010xxxxxxxx";
        String myMessage = message;
        smsManager.sendTextMessage(sendTo, null, myMessage, nullnull);
    }
 
}
cs

1
2
    <uses-permission android:name="android.permission.SEND_SMS"/>
 
cs


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

Day110 아두이노  (0) 2016.08.30
Day109 아두이노  (0) 2016.08.29
Day105 안드로이드 웹뷰  (0) 2016.08.19
Day103  (0) 2016.08.17
Day102 안드로이드  (0) 2016.08.11

+ Recent posts