안드로이드에서 문자메세지 읽어오는 방법
조회수 7584회
1 답변
-
1. 우선 안드로이드 매니페스트에서 아래처럼 퍼미션을 줍니다.
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
2. 그리고 SMS를 받는 리시버 클래스를 정의해줍니다.
public class SMSReceiver extends BroadCastReceiver { // 지정한 특정 액션이 일어나면 수행되는 메서드 @Override public void onReceive(Context context, Intent intent) { // SMS를 받았을 경우에만 반응하도록 if문을 삽입 if (intent.getAction().equals( "android.provider.Telephony.SMS_RECEIVED")) { StringBuilder sms = new StringBuilder(); // SMS문자를 저장할 곳 Bundle bundle = intent.getExtras(); // Bundle객체에 문자를 받아온다 if (bundle != null) { // 번들에 포함된 문자 데이터를 객체 배열로 받아온다 Object[] pdusObj = bundle.get("pdus"); // SMS를 받아올 SmsMessage 배열을 만든다 SmsMessage[] messages = new SmsMessage[pdusObj.length]; for (int i = 0; i < pdusObj.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]); // SmsMessage의 static메서드인 createFromPdu로 pdusObj의 // 데이터를 message에 담는다 // 이 때 pdusObj는 byte배열로 형변환을 해줘야 함 } // SmsMessage배열에 담긴 데이터를 append메서드로 sms에 저장 for (SmsMessage smsMessage : messages) { // getMessageBody메서드는 문자 본문을 받아오는 메서드 sms.append(smsMessage.getMessageBody()); } sms.toString() // StringBuilder 객체 sms를 String으로 변환 } } } }
3. 안드로이드 매니페스트파일에서 해당 리시버를 등록해줍니다.
<receiver android:name=".SMSReceiver"> <intent-filter > <!-- 문자를 받아올 수 있게 intent-filter 추가 --> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
이걸 잘 응용하시면 됩니다.
댓글 입력