소프트웨어/Android/Java/Ndk
Android] sms 읽기(문자 이벤트)
cs만두
2016. 6. 14. 23:29
Device로 전송된 SMS를 읽으려면 BroadcastReceiver를 이용하여 "android.provider.Telephony.SMS_RECEIVED" 엑션을 받으면 된다.
% BroadcastReceiver를 사용하는 방법을 정리 해놓은 글이 있는줄 알았는데 찾아보니 없는것같다. 나중에 시간되면 따로 글 빼놔야겠다. 퇴근하고 벌써 22시 44분이라 작성할 시간이 없다..
% 나중에 쓴다는게 깔끔하지 못해서 이 글 작성 미루고 Broadcast 관련 기초 문서 작성
# Reciver에서 sms received Action 받기
regisetReciver 하기 전에 Intent에 IntentFilter로 "android.provider.Telephony.SMS_RECEIVED";를 추가한다. sms가 날라오면 해당 Intent가 날라온다.
# 문자 string 읽기
Android SMS는 PDUS(Protocol data unit, https://en.wikipedia.org/wiki/Protocol_data_unit)이라는 형태로 날라온다. PDU는 프로토콜이라 정확한 기술사항을 들여다 볼 시간이 없어서 분석은 못했다. 단순히 우리는 메시지만 사용할 것이기 때문에 아래와 같이 내용을 갖고오면 된다.
(https://developer.android.com/reference/android/telephony/SmsMessage.html#createFromPdu(byte[]))
Bundle bundle = intent.getExtras(); Object[] msg = (Object[]) bundle.get("pdus"); SmsMessage[] smsMsg = new SmsMessage[msg.length]; for(int i=0; i< msg.length; i++) { smsMsg[i] = SmsMessage.createFromPdu((byte[])msg[i]); }
끝