브로드캐스트 : 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, null, null); } } | 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 |