메뉴 건너뛰기

2015.06.29 22:33

android SMS 리시버

조회 수 6871 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. AndroidManifest.xml 파일에 필요한 권한을 준다. 

 

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

2. AndroidManaifest.xml 파일에 SMS를 수신할 리시버를 등록한다.

 

  <receiver android:name="kr.inclass.smscapture.SMSReceiver">
   <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
   </intent-filter>
  </receiver>

 

즉... SMS가 도착하면 안드로이드가 SMSReceiver에게 그 사실을 알려준다. 

3. 리시버는 BroadcastReceiver로부터 상속받아서 클래스를 만들어야 한다. 리시버 클래스를 만든다.

 

public class SMSReceiver extends BroadcastReceiver {

...

}

 

4. BroadcastReceiver는 onReceive 함수를 오버라이드해야 한다. 이 함수가 SMS 수신시 호출되는 함수이다. onReceive 함수를 오버라이드해준다.

 

private static final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; // 액션명을 문자열 상수로 정의해준다.

 

@Override

public void onReceive(Context context, Intent intent) {

 String actionName = intent.getAction();

if ( ! actionName.equals(ACTION_SMS_RECEIVED) ) return;  // 인텐트필터에 리시버가 호출되는 필터를 지정해줬는데, 왜 굳이 액션을 검사하는지는 모르겠다.

 

Bundle extras = intent.getExtras();

if ( extras == null ) return;

 

Object[] pdus = (Object[]) extras.get("pdus");  // 넘겨받은 인텐트의 extra데이터로 pdu 객체들이 넘어온다. pdu 객체란거는 sms 패킷단위이다. 즉, 수신된 sms의 정보를 담고 있는 패킷이다.

 

if ( pdus == null ) return;

 

SmsMessage[] msgs = new SmsMessage[pdus.length]; // 수신된 sms 객체갯수만큼 SmsMessage 객체를 생성한다.

 

for ( int i=0 ; i<pdus.length; i++ ) {

 

msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);  // pdu 객체로부터 SmsMessage 객체를 생성한다.

 

String number = msgs[i].getOriginatingAddress(); // 발신자의 전화번호를 얻는다.

String message = msg[i].getDisplayMessageBody().toString(); // 발신내용을 얻는다.

String date = getFormattedDate(msgs[i].getTimestampMillis()); // 발신한 시간을 구한다.

 

// 얻은 데이터로 필요한 처리를 한다. 주의할 점은 인터넷, 디스크IO 등과 같은 작업은 스레드로 처리해야 한다는 것이다. 그렇지 않으면 리시버가 죽는다.

}

 

 

}

 

// 타임스탬프를 보기편한 문자열로 변환

private String getFormattedDate(long timestampmiliseconds) {

final Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(timestampmiliseconds);

return cal.getTime().toLocaleString();

}


  1. No Image 20Oct
    by
    2014/10/20 Views 7361 

    prepend(),append(),before(),after() 메서드

  2. No Image 10Jun
    by
    2015/06/10 Views 14218 

    TextureView를 이용한 카메라 Preview 좌우 반전

  3. 안드로이드 NDK 개발환경 만들기 / 이클립스 NDK 설정

  4. No Image 29Jun
    by
    2015/06/29 Views 8336 

    안드로이드 소스 코드 보호 기법

  5. No Image 29Jun
    by
    2015/06/29 Views 7754 

    Java Applet과 javascript와의 통신

  6. No Image 29Jun
    by 조쉬
    2015/06/29 Views 6871 

    android SMS 리시버

  7. 폰갭(PhoneGap) & jQuery Mobile 로 안드로이드 어플 개발

  8. No Image 29Jun
    by
    2015/06/29 Views 8472 

    폰갭(PhoneGap) 에서 페이지들간의 이동

  9. No Image 29Jun
    by
    2015/06/29 Views 7360 

    폰갭(PhoneGap) 플러그인 사용하기

  10. No Image 29Jun
    by
    2015/06/29 Views 8435 

    폰갭(PhoneGap) 플러그인 만들기

  11. No Image 29Jun
    by
    2015/06/29 Views 7976 

    안드로이드 - 소방시설바이블 어플 소스 ( 폰갭, 폰갭플러그인, assets 폴더안의 파일 이용, pdf 리더기 선택, 유튜브재생기 선택 )

  12. 안드로이드 소스 - 카메라 플래쉬(Flash, 후라시) 앱

  13. 안드로이드 맵 API key (배포용 맵키)

  14. [Android 2.3] spinner

  15. No Image 01Jul
    by
    2015/07/01 Views 7051 

    [Android 2.3] SharePreference

  16. Invalid project description 문제

  17. 푸시 서비스(GCM)에 대해 알아보자

  18. 블루투스(Bluetooth) 통신에 대해 알아보자

  19. 문자를 음성으로 변환(TTS)에 대해 알아보자

  20. 다운로드 매니저(DownloadManager)에 대해 알아보자

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved