제가 sms 문자가 도착할 때, 그 문자 메시지를 확인하는 코드를 작성하고 있습니다.


제가 참고한 코드는 다음과 같습니다.

http://211.234.117.89/board/board.php?board=sourcecode&command=body&no=17


public class SmsReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    StringBuilder sb = new StringBuilder();
    Bundle bundle = intent.getExtras();

    if(bundle != null) {
      Object[] pdusObj = (Object[])bundle.get("pdus");
      SmsMessage[] messages = new SmsMessage[pdusObj.length];
      for(int i = 0; i < pdusObj.length; i++) {
        messages[i] = SmsMessage.createFromPdu((byte[])pdusObj[i]);
      }

      for(int i = 0; i < messages.length; i++) {
        sb.append("[SMS 수신]n");
        sb.append("발신번호: " + messages[i].getOriginatingAddress() + "n");
        sb.append("내용: " + messages[i].getDisplayMessageBody());
      }

      Toast.makeText(context, sb.toString(), Toast.LENGTH_SHORT).show();  
    }
  }
}



음 그런데 이렇게 상속을 받게되면, 따로 호출하지 않아도
문자가 올때 자동으로 해당 함수가 실행되는 것인가요??

코드를 그대로 가져다가 갤럭시S에서 실행했더니, 런타임 에러가 납니다.

혹시 새로운 클래스를 만들지 않고, 해당 클래스를 그대로 사용해서 에러가 나는 것일까요??
아니면 기본적인 안드로이드 프로젝트를 생성한후, 아래의 클래스 파일을 추가로 등록한 후 클래스 에 대한 객체를 생성해야 하나요??







아 그리고 만약 해당 코드가 정상적으로 실행된다고 했을 때,
다른 어플리케이션에 해당 코드를 붙이려면 어떻게 해야하나요??

제가 지금 짜고 있는 프로그램에 이미 6개 정도의 클래스 파일이 묶여 있는데요

만약 이벤트 함수 형식으로 문자가 올때 리시버 함수가 자동으로 실행되면, 메인 클래스에서 리시버 클래스에 대한 객체를 생성한다던가 하는 어떠한 특별한 처리를 해줄 필요가 없는 걸까요??


원래는 개발자가 아닌데, 사정상 개발을 하게되어 헷갈리는게 많습니다.

고견 부탁드립니다.




아 그리고 혹시나 해서 xml 파일도 함께 첨부합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="smstest.sms"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".smstest"
                  android:label="@string/app_name">
            <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>
  <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
  </receiver>
    </application>

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