sms문자가 오면 받아서 정해논 번호로 sms문자를 보내는 프로젝트
<마눌이 카드사에서 문자 온 것을 자기 폰으로 문자를 보내게 만들어 달라고 해서.. 시작!!!!>
마지막 수정이 되길...
현재까지의 문제점
- SMS전송은 잘되나 LMS로 보내려 하면 문자가 계속 SMS로 쪼개져 보내진다.
- 텍스트를 앞을 잘라도 계속SMS로 쪼개져 보내진다. 이틀정도 골머리를 썩었다.
- 알고보니 어이가 없었다. SKT 스카이NO.6스마트폰을 쓰고 있었는데 LMS는 SMS두개로 나뉘어 받는 것이 아닌가...헐...
두 개 쪼개져서 오니 두개로 쪼개져서 보낼 수 밖에...쩝...
문제점 해결
- Bundle를 사용, 키를 전화번호로 해서 문자내용을 저장 나뉘어진 문자를 하나로 통합
sendMultipartTextMessage로 내용을 보내자!!!
=> // 같은 번호로 온 문자를 앞 내용에 더하여 저장...[이부분이 아주 중요할 줄이야...]
우선 AndroidManifest.xml에 권한 설정 추가
권한 설정이 직관적이라 설명이 필요 없네...
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
// 인텐트로 받은 메시지 가져오기
Intent intent = getIntent();
Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
msgs = new SmsMessage[messages.length];
for(int m = 0; m < msgs.length; m++) {
msgs[m] = SmsMessage.createFromPdu((byte[])messages[m]);
}
setContentView(R.layout.send);
mHandler.sendEmptyMessageDelayed(0,100);
mCounthandleMessage = 0;
// 핸들러(mHandler) 내용 [Handler mHandler = new Handler()]
Bundle map = new Bundle();
for(int m = 0; m < msgs.length; m++) {
// 보낸 전화 번호
String strDisplayOriginatingAddress = msgs[m].getDisplayOriginatingAddress();
// 보낸 내용
String strDisplayMessageBody = msgs[m].getDisplayMessageBody();
// 보낸 전화번호가 있어야 전송 가능
if(strDisplayOriginatingAddress != null && strDisplayOriginatingAddress != "" &&
strDisplayOriginatingAddress.equals("원하는 전화 번호만 저장") ) {
// 같은 번호로 온 문자를 앞 내용에 더하여 저장...[이부분이 아주 중요할 줄이야...]
if(!map.containsKey(strDisplayOriginatingAddress))
map.putString(strDisplayOriginatingAddress, strDisplayMessageBody);
else {
strDisplayMessageBody = map.getString(strDisplayOriginatingAddress) + strDisplayMessageBody;
map.putString(strDisplayOriginatingAddress, strDisplayMessageBody);
}
}
}
Set<String> mapkeyset = map.keySet();
Iterator<String> iter = mapkeyset.iterator();
while(iter.hasNext()) {
String temp = iter.next();
String strbody = map.getString(temp);
// SMS Manager
SmsManager sms = SmsManager.getDefault();
// LMS메시지 보내기
ArrayList<String> parts = sms.divideMessage(strbody);
sms.sendMultipartTextMessage("받을 전화 번호 넣기", null, parts, null, null);
}
map.clear();
'IT,과학 > 프로그래밍' 카테고리의 다른 글
[컴퓨터] 윈도우10 멀티부팅 명칭변경 이름변경 (0) | 2018.05.02 |
---|---|
베가no.6 베넘식 USB디버깅 한참찾았네...이스터에그... (0) | 2015.07.17 |
윈도우7 최대절전모드 OFF (0) | 2015.07.15 |
VS2013로 안드로이드 프로그램 만들기? 가능해? (0) | 2015.07.13 |
엇! VS2013이 무료!!! 나만 몰랐네!! VS2013 무료 다운로드 방법 (0) | 2015.07.13 |
댓글