2013-04-25 26 views
0

如何從我的應用程序中知道它是否從我的BroadcastReceiver啓動/恢復?如何從我的應用程序中知道它是否從我的BroadcastReceiver啓動?

我攔截撥出電話(android.intent.action.NEW_OUTGOING_CALL)。如果getString(Intent.EXTRA_PHONE_NUMBER)是一組數字之一,我放棄該調用(setResultData(null)),而不是我的應用程序,putExtra特定數字。如果(並且只有)來自BroadcastReceiver,我希望能夠發出一個基本「使用此號碼/返回呼叫的應用程序」的提醒。然而,有時當我從其他地方回到應用程序時,儘管我還沒有來自BroadcastReceiver,但這個數字似乎仍然是意圖的附加值。我試圖檢查FLAG_ACTIVITY_NEW_TASK標誌,但有時候不是來自BroadcastReceiver。

+0

您希望用戶在打完電話後再回到您的活動嗎?如果用戶確實打過電話。 – 2013-04-25 18:29:22

回答

0

正如您所說:您可以將任何參數傳遞給您的活動,表明它是從您的BroadcastReceiver中調用的。但是,恢復到您的活動時,某些代碼可能會再次執行 - 可能會導致不必要的結果。當我曾經存在一個類似的問題時,我保存/ 重寫了意圖中的一些信息,例如,

myActivity.getIntent().putExtra("phoneNumber", "nil"); 

什麼工作對我來說是,我重寫了在意向額外的已處理後一邊整理的ActionMode(讓我們與"nil"說)。所以後來我就能夠評估這些信息在onResume(),例如:

@Override 
public void onResume() { 
    super.onResume(); 

    String phoneNumber = getIntent().getExtras().getString("phoneNumber") 

    if ("nil".equals(PhoneNumber)) { 
     ... 
    } 
} 

只是做了一個小測試,它工作得很好。

希望這有助於...乾杯!

+0

意圖覆蓋額外似乎工作,謝謝! – whysohard 2013-04-26 14:55:41

相關問題