你有三种方法:
1)您可以在您的内部定义您的广播MainActivity
像这样:
in onCreate()
registerReceiver(smsReceiver, new IntentFilter(SMS_RECIEVED));
并定义 smsReciverMainActivity
private BroadcastReceiver smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//you can update textBox here
handler.postDelayed(sendUpdatesToUI, 10);
}
};
定义一个可运行程序来更新 UI
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
update();
}
};
以及更新方法
private void update(String text) {
textView.setText(textView.getText().toString() + text);
}
2)在你的Activity和BroadCastReceiver之间注册一个接收器
3)用新的Intent启动你的Activity来更新当前打开的Activity
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("Key", "text");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
UPDATE :
解释方法2
MainActivity.class
in onResume()
registerReceiver(broadcastReceiver, new IntentFilter(SmsReceiver.BROADCAST_ACTION));
in onDestroy()
unregisterReceiver(broadcastReceiver);
本地广播(broadcastReceiver,在 MainActivity.class 中)
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
};
private void updateUI(Intent intent) {
String text = intent.getStringExtra("key");
textView.setText(textView.getText().toString() + text);
}
SmsReceiver.class
全局属性
public static final String BROADCAST_ACTION = "your.package.name.displayevent";
private final Handler handler = new Handler();
Intent intent;
Context context;
in onReceive()
handler.removeCallbacks(sendUpdatesToUI);
handler.postDelayed(sendUpdatesToUI, 10);
this.context = context;//you can retrieve context from onReceive argument
this.intent = new Intent(BROADCAST_ACTION);
定义两个方法
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
display();
}
};
private void display() {
intent.putExtra("key", text);
context.sendBroadcast(intent);
}