어플 제작중에 어려운점이 있어 이렇게 질문을 해봅니다.
현재 상황으로는 어플이 실행되고 있는 동안 문자를 받으면 전화번호와 메세지를 받는것은 성공했습니다.
그런데 만약 하나의 문자가 아닌 여러개의 문자를 받는다고 했을때 그것을 어떻게 구현해야될지 모르겠습니다.
코드를 여기저기서 스크랩해와서 완성하긴 했지만 문자메세지 한개만 표현이 가능합니다. 이것을 배열로 저장하여 표현해야할지 어려움이 있고 도움을 구하고자 이렇게 질문해봅니다.
<문자메세지를 받아와서 저장하는 클래스(액티비티에 띄우기 위해 인탠트로 저장했습니다.)
package com.example.haesooo.sms_testtt;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context mContext, Intent intent) {
String action = intent.getAction();
if("android.provider.Telephony.SMS_RECEIVED".equals(action)){
Bundle bundle = intent.getExtras();
Object messages[] = (Object[])bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for(int i = 0; i < messages.length; i++) {
smsMessage[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
}
Date curDate = new Date(smsMessage[0].getTimestampMillis());
SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy년 MM월 HH시 mm분 ss초 ", Locale.KOREA);
String originDate = mDateFormat.format(curDate);
String origNumber= smsMessage[0].getOriginatingAddress();
String Message = smsMessage[0].getMessageBody().toString();
Intent showSMSIntent = new Intent(mContext, MainActivity.class);
showSMSIntent.putExtra("originNum", origNumber);
showSMSIntent.putExtra("smsDate", originDate);
showSMSIntent.putExtra("originText", Message);
showSMSIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(showSMSIntent);
}
}
}
MainActivity
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView smsDate = (TextView) findViewById(R.id.smsDate);
TextView originNum = (TextView) findViewById(R.id.originNum);
TextView originText = (TextView) findViewById(R.id.originText);
Intent smsIntent = getIntent();
String originNumber = smsIntent.getStringExtra("originNum");
String originDate = smsIntent.getStringExtra("smsDate");
String originSmsText = smsIntent.getStringExtra("originText");
originNum.setText(originNumber);
smsDate.setText(originDate);
originText.setText(originSmsText);
}
}