브로드캐스트 리시버는 안드로이드에서 발생하는 여러 동작(화면이 on/off, 전원이 on/off, SMS 수신등..)들을 받고자 하는 곳에 알려주는 기능을 합니다. 방송알림정도로 표현을 할 수 있습니다.


먼저 SMS를 수신하기 위해서는 manifests 파일에 SMS에 대한 권한을 추가해야 합니다.

<uses-permission android:name="android.permission.RECEIVE_SMS"/>


또한 SMS가 왔을 때 수신을 받기위해 BroadcastReceiver를 추가해줘야 합니다.


아래의 예시 코드를 참고

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver android:name=".SMSReceiver">
<intent-filter >
<!-- 문자를 받을 수 있도록 intent filter를 추가 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>


이제 BroadcastReceiver 부분에서 SMS를 받았을 때의 액션을 처리하면 됩니다.
SMS에 대한 액션일때만 처리하기 위해 intent의 액션을 비교하여 처리하였다.


아래 예시코드를 참고

public class SMSReceiver extends BroadcastReceiver {
private String SMSACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals(SMSACTION)){
Bundle bundle = intent.getExtras();

if(bundle != null){
Object[] pdusObjArr = (Object[]) bundle.get("pdus");

SmsMessage[] messages = new SmsMessage[pdusObjArr.length];
for(int i = 0 ; i < pdusObjArr.length ; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdusObjArr[i]);
}

Date curDate = new Date(messages[0].getTimestampMillis());
Log.d("@@문자 수신 시간", curDate.toString());

String number = messages[0].getOriginatingAddress();
Log.d("@@발신 번호 확인", number);

String smsBody = messages[0].getMessageBody().toString();
Log.d("@@문자 내용", smsBody);

}
}
}
}

핸드폰 인증에 대한 인증번호를 가져오는 방식도 SMS 내용을 가져오고 원하는 부분만 찾아서 사용하면 됩니다.

Posted by kkangMH

블로그 이미지
kkangMH

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.11
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함