Developer MJ Story

[Android/SMS] Android에서 code로 SMS 보내고 받기 본문

Software/Android

[Android/SMS] Android에서 code로 SMS 보내고 받기

집근처 2014. 6. 9. 14:24
반응형
  • Code level에서 SMS를 보내는 일은 거이 없기 때문에 다들 관심이 없을 것이다. 하지만 간혹 쓸일이 있을 지도 모른일아닌가?
  • 게다가 매우~~~ 간단하니 일단 정리!

 

    • Source Code

        SmsManager smsManager = SmsManager.getDefault();

        smsManager.sendTextMessage(PhoneNumbernullMessagenullnull);


  

  • 위와 같이 써 넣으면 SMS 메시지를 전송할 수 있음
  • sendTextMessage()의 형태
    • void android.telephony.SmsManager.sendTextMessage(String destinationAddress, String scAddress, String Text, pendingIntent sentIntent, PendingIntent deliveryIntent);
    • 위의 source code처럼 sendTextMessage()의 인자로 목적지 주소와 text만 할당하여 전송가능
    • null 처리한 인자는 상대 디바이스가 해당 문자를 받았는지 확인 하기 위해 사용하는 인자들임

 

  • SMS를 수신하는 부분도 복잡하지 않음
  • Broadcast Receiver에 SMSReceiver를 등록하고 처리 하면 끝~!

 

    • Source Code

        private BroadcastReceiver SMSReceiver = new BroadcastReceiver() {

               @Override

               publicvoid onReceive(Context context, Intent intent) {            

                       Bundle extras = intent.getExtras();

                       if(extras == nullreturn;

                       Object[] pdus = (Object[])extras.get("pdus");       

                       if(pdus == nullreturn;

                       SmsMessage[] msgs = new SmsMessage[pdus.length];

                      

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

                              msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

                              String number = msgs[i].getOriginatingAddress();

                              String message = msgs[i].getDisplayMessageBody().toString();

                             

                              if(message.contains(FNParam.MASTER_SERVICE_REQUEST)){                                     

                                   SmsManager smsManager = SmsManager.getDefault();

                                   smsManager.sendTextMessage(PhoneNumbernullMessagenullnull);

                              }

                              Toast.makeText(context, "Number : "+number+"\r\nMessage : "+message, Toast.LENGTH_SHORT).show();

                       }

               }

        };

       

        privatevoid registerSMSReceiver(){

               IntentFilter filter = new IntentFilter(FNParam.ACTION_SMS_RECEIVED);

               registerReceiver(SMSReceiver, filter);

        }

       

        privatevoid unregisterSMSReceiver(){

               unregisterReceiver(SMSReceiver);

        }      


        

  • 'PDUS'는 Android 내부에 정의된 것으로 왜? 이거지? 라고 생각하지 말고 그냥 저렇게 써야함.
  • registerSMSReceiver()를 onCreate()에 등록하고, unregisterSMSReceiver()를 onDestroy() 등록해서 Activity가 실행되면, Broadcast Receiver에 등록시키고, Activity가 destroy 되면 해제 시킴


반응형