[英]broadcast Intent / receiver
在我的應用程序中,我有一個廣播接收器(在清單中注冊)類,我想從中將Intent發送給MainActivity。 因此,我在MainActivity中有另一個廣播接收器(動態注冊)和一個意圖過濾器。 但是我沒有收到主要活動的意圖。 這是代碼:
public class SmsReceiver extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
public SmsReceiver(){
}
String TAG = SmsReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent){
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] sms = (Object[]) bundle.get(SMS_BUNDLE);
String str = "";
for (int i=0; i < sms.length; i++) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsbody = smsMessage.getMessageBody().toString();
str += smsbody;
}
Intent bcIntent = new Intent();
bcIntent.setAction("SMS_RECEIVED_ACTION");
bcIntent.addCategory(Intent.CATEGORY_DEFAULT);
bcIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
bcIntent.putExtra("message", str);
context.sendBroadcast(bcIntent);
}
}
}
並在MainActivity中:
public class MainActivity extends AppCompatActivity
{
public boolean receivedSMS;
public String displaySMS;
private BroadcastReceiver iReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String qqq = intent.getExtras().getString("message");
info2(intent.getExtras().getString("message"));
evalMsg(qqq);
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
graphInit();
timerInit();
smnInit();
}
@Override
protected void onResume(){
super.onResume();
IntentFilter iFilter = new IntentFilter();
iFilter.addAction("SMS_RECEIVED_ACTION");
registerReceiver(iReceiver, iFilter);
}
@Override
protected void onPause(){
unregisterReceiver(iReceiver);
super.onPause();
}
有誰知道為什么主活動中的廣播接收器沒有收到意圖? 應該在TextView中顯示一個文本,但永遠不會顯示。 謝謝你的任何想法
通過SmsReceiver
接收意圖時,您不知道活動是否啟動以及處於什么狀態。 您應該考慮在SmsReceiver.onReceive()
使用startActivity(android.content.Intent)
SmsReceiver.onReceive()
。 這樣,您將在Activity.onCreate
使用相同的intent對象(只需調用getIntent()
方法)
但是,如果您想堅持原始設計的雙重廣播,那么這就是您的答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.