안드로이드에서 문자메세지 읽어오는 방법


회원가입할때 인증번호를 문자로 보내고 그걸 앱에서 인증번호만 자동으로 빼오게끔 하고싶은데요. 그러려면 sms를 받아와야하잖아요. sms의 내용을 어떻게 받아올수있을까요?

  • 2016년 02월 11일에 작성됨

조회수 415


1 답변


좋아요
0
싫어요
채택취소하기

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>

이걸 잘 응용하시면 됩니다.

  • 2016년 02월 11일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close