IT/Android
Android] 문자 SMS 읽어오기
깻잎쌈
2023. 1. 20. 12:00
반응형
Broadcast Receiver를 이용한 SMS 수신
Broadcast Receiver(방송수신자)란? 안드로이드 시스템에서는 전화가 오거나 문자메시지가 오는 등 특정 상황에서 방송을 내보낸다. 이런 시스템에서 방송을 해주는 이벤트들을 Global Event라고 하며,
ju-hy.tistory.com
권한 추가
<uses-permission android:name="android.permission.RECEIVE_SMS" />
SMS_RECEIVED BroadcastReceiver 등록
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(smsReceiver, intentFilter);
.
.
.
private SmsMessage[] parseSmsMessage(Bundle bundle){
Object[] objs = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[objs.length];
for(int i=0; i<objs.length; i++) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String format = bundle.getString("format");
messages[i] = SmsMessage.createFromPdu((byte[]) objs[i], format);
} else {
messages[i] = SmsMessage.createFromPdu((byte[]) objs[i]);
}
}
return messages;
}
private BroadcastReceiver smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Bundle bundle = intent.getExtras();
SmsMessage[] messages = parseSmsMessage(bundle);
if (messages.length > 0) {
String contents = messages[0].getMessageBody().toString();
//
Log.d(TAG, contents);
}
}
}
};
반응형