안드로이드 개발 정보
(글 수 1,067)
안녕하세요.
스팸을 잡아주는 앱을 연습삼아 만들어 보고 있는데요.
"누구야!"라는 앱이 실제 송신번호와 표시되는 번호가 틀린 SMS를 찾아주는 기능이 있어서
저도 그 기능도 포함할려고 연구중... SmsMessage 클래스에 번호를 가져오는 메소드가 두가지가 있어서
실행을 해 봤더니 getOriginatingAddress() 메소드는 실제 송신자 번호를 알려주고 getDisplayOriginatingAddress() 메소드는 표시되는 번호를 알려주네요.
SKT에 겔럭시s(프로요 정펌)에서 잘 되네요.
다른 폰이나 통신사는 어떤지 궁금하네요.
아래 소스 참조용 BR 소스입니다.
public class SMSReceiver extends BroadcastReceiver {
private static final String ACTION_SMS = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context pCtx, Intent pIntent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(pCtx);
if ( prefs.getBoolean("prefEnabled",false) && pIntent.getAction().equals(ACTION_SMS)) {
Object[] pdus = (Object[]) pIntent.getExtras().get("pdus");
SmsMessage msgs[] = new SmsMessage[pdus.length];
for (int i = 0; i <msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
SpamKillerDao dao = new SpamKillerDao(pCtx);
SMS sms = new SMS();
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i <msgs.length; i++) {
sms.body = msgs[i].getMessageBody();
sms.sender_org = msgs[i].getOriginatingAddress();
sms.sender_dis = msgs[i].getDisplayOriginatingAddress();
sms.time = dateformat.format(new Date(msgs[i].getTimestampMillis()));
}
dao.insertBlockedSpam(sms);
}
}
}
2011.01.26 17:26:09
정보감사합니다.^^
네이트온으로 문자를 보낼때
갤럭시S의 경우 getOriginatingAddress() 를 사용하면 서비스번호 같은게 나오고
getDisplayOriginatingAddress() 를 사용하니 제가 입력한 번호가 나오더군요.
모토로이, 모토그램, 넥세스원 등은 getOriginatingAddress() 를 사용해도 제가 입력한 번호가 잘 나오고요.
그런데 옵티머스Q는 두가지 다 써도 서비스 번호 같은 값만 나와서 지금 무척이나 고생중입니다.
그래도 딸셋아빠님 덕분에 여기까지 왔네요 ^^ 감사합니다.
정보 감사합니다