嗨,我是SO和Android编程的新手。我想在每次收到新消息时刷新TextView,而不关闭应用程序。因此,每当有新消息到达时,TextView将自动刷新并显示新消息。我已经搜索过了,无法找到任何关于此的线索。有可能吗?
这是我的MainActivity代码:
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);
}
这是我的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);
}
}
答案 0 :(得分:0)
每当您想要更改文本时再次调用此方法
SMSm.setText("new text");
答案 1 :(得分:0)
在onReceive()中使用setText(),现在只在onCreate中设置文本,因此它不起作用。
目前你在onReceive中展示吐司的地方再次设置此文本,如下所示
SMSm.setText("sender : " + phoneNumber1 + " " + "\nSMS: " +
SMSBody1);
答案 2 :(得分:0)
实现在广播接收器中命名的一个interface
public interface RefreshSMS {
public void setRefreshMessage(String ph_no, String message);
}
public RefreshSMS refreshSMS;
现在在onReceive()
方法
refreshSMS.setRefreshMessage(phoneNumber, message);
现在使用此界面实现您的活动
public class MainActivity extends AppCompatActivity implements RefreshSMS{
将返回活动类中的覆盖方法setRefreshMessage()
,并在该方法中设置文本。
public void setRefreshMessage(String ph_no, String message){
smsText.setText(ph_no+" : "+message);
}