Hi I'm new to SO and Android programming. I want to refresh my TextView every time i get a new message, without closing the app. So everytime a new message arrives, the TextView will auto refresh and show the new message. I've already searched for it and can't find any clue about this. Is it possible to do?
Here's my MainActivity code:
TextView SMSm;
static String phoneNumber1;
static String SMSBody1;
public static void setSmsDetails(String phoneNumber, String SMSBody) {
phoneNumber1 = phoneNumber;
SMSBody1 = SMSBody;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SMSm = (TextView) findViewById(R.id.etSmsBody);
SMSm.setText("sender : " + phoneNumber1 + " " + "\nSMS: " +
SMSBody1);
}
and this is my BroadcastReciever :
final SmsManager sms = SmsManager.getDefault();
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage
.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage
.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Log.i("SmsReciver", "senderNum: " + senderNum
+ ", message: " + message);
MainActivity.setSmsDetails(senderNum, message);
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "sender: "
+ senderNum + ", message: " + message, duration);
toast.show();
}
}// bundle
}catch (Exception e) {
Log.e("SmsReciver", "Exception smsReciver" + e);
}
}
Use setText() in onReceive() ,right now you are set text only in onCreate so its not working.
Where currently you are show toast in onReceive set this text again like below
SMSm.setText("sender : " + phoneNumber1 + " " + "\nSMS: " +
SMSBody1);