開始從廣播接收器的活動我可以用這種方式調用從廣播接收器的活動:與結果
public class AlarmReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
try {
Intent i = new Intent(context, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.v(TAG, "alarm triggered");
} catch (Exception e) {
Log.v(TAG, e.toString());
}
}
}
這帶來的應用前端和活動要求onResume()
。我的問題是我無法確定BroadcastReceiver是否將我帶到onResume()
,或者只是用戶本身手動。有什麼方法可以確保BroadcastReceiver稱爲活動?
我還嘗試通過執行i.putExtra("foo", "bar")
來使用Extras以BroadcastReceiver填充意向。我無法通過在Activity上調用MyActivity.getIntent().getExtras().get("foo")
來讀出它。
希望有人能幫助我解決這個問題,非常感謝!
將「STARTED_BY_RECEIVER」放入一個靜態變量並在兩個地方使用它意味着什麼?由於看到沒有變量STARTED_BY_RECEIVER,我可以像正常的方式檢查像'STARTED_BY_RECEIVER == true;'這不適合我,我做了你所說的一切,但「靜態變量」的東西。 'if(getIntent()。getExtras()!= null && getIntent()。getExtras()。getBoolean(「STARTED_BY_RECEIVER」))'雖然我沒有'i.putExtra(「STARTED_BY_RECEIVER」,true)'in我的BroacastReceiver。 – arminb 2011-12-22 01:07:54
好吧忘了靜態的東西..你把if()放在onCreate的右邊?如果它是從接收方調用的,它將是真的,所以if語句將運行,如果用戶調用,那麼其他語句將運行,因爲在那裏不會有額外的(「STARTED_BY_RECEIVER」)。現在,您需要儘可能徹底正如我在我的回答中告訴我什麼沒有工作,只是說「這不適合我」 – 2011-12-22 14:24:31
在我的BroadcastReceiver的'onReceive()'方法中,我設置了'i.putExtra (「STARTED_BY_RECEIVER」,true);'在我通過context.startActivity(i)'開始活動之前。在我的Activity中,我將'if(getIntent()。getExtras()!= null && getIntent()。getExtras()。getBoolean(「STARTED_BY_RECEIVER」))'放入我的'onCreate()'方法中,但if子句永不放棄成真。 這就是我所做的,抱歉不適合,並感謝您的參與。 – arminb 2011-12-22 14:52:32