안녕하세요
문자 메시지가오면 메지지 내용안에 특정문자(ad)가 포함되어 있다면 해당 어플리케이션을 실행하도록 하는 어플을 만들고 있습니다.
그런데 문자열 파싱작업이 잘 되지않네요... 배열을 String으로 바꾸고 contains로 비교하는 방법이 틀린건가요,,??도와주세요 ㅠ
public class SmsReceiver extends BroadcastReceiver {
private static final String TAG = DEBUG_TAG;
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
private static final String Test = "ad";
String test = null;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "[inside onReceive] ");
if (intent.getAction().equals(ACTION)) {
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]);
test = messages[i].toString();
// 문자열 파싱하는 부분
if(test.contains(Test)){
//All Messages.
for (SmsMessage currentMessage : messages){
sb.append("Sender : ");
// Sender-Number
sb.append(currentMessage.getDisplayOriginatingAddress());
sb.append("\n----Message----\n");
// Actual Message-Content
sb.append(currentMessage.getDisplayMessageBody());
Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
}
}
}
Log.d(TAG, "[SMSApp Bundle] " + bundle.toString());
}
// Logger Debug-Output
Log.d(TAG, "[SMSApp] onReceiveIntent: " + sb);
// Show the Notification containing the Message.
Toast.makeText(context, "실패", Toast.LENGTH_LONG).show();
abortBroadcast();
/*
// Start the Main-Activity
Intent i = new Intent(context, Main.class);
// New Activity;
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
*/
}
}
}



