2013-04-10 43 views
0

我正在尋找一種方法在我的Application實施中獲得我的android應用程序的意圖。 Application類本身沒有getIntent()只是Activities似乎有這個能力。是否有可能獲得我的android應用程序的意圖?

原因是我有一個有幾個意圖的應用程序,可以稱爲無狀態。但我需要用戶登錄。所以我想檢查用戶是否已登錄,如果不提示登錄對話框,而不是在每個活動中都竊聽相同的代碼。

+0

允許所有意圖通過相同的活動 - 「選擇器」「捕獲」...在本活動的onCreate中,您將選擇/開始「真實」活動(使用相同的意圖)和完成()活動「選擇器」。 ..你也可以把特殊的Extra to Intent從「選擇器」傳遞到「真實」,這表明用戶是否登錄並且只在「選擇器」中登錄特定的東西Acticity – Selvin 2013-04-10 08:58:38

回答

1

的方式有一些功能,在每一個Activity就是讓他們都繼承一個共同的超類,像這樣:

class LoginActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     if (getIntent().hasExtra(...)) { 
      doLogin(); 
     } 
    } 

class MyActivity extends LoginActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // user is now logged in 
     setContentView(...); 
    } 
} 

LoginActivity只有你的其他活動繼承,所以不要在你的AndroidManifest.xml中提及它。您無法在Application中獲得Intent,因爲這樣的事情沒有任何意義。只要您的進程正在運行,Application對象就存在。在任何時候,您的活動可能會有零個,一個或多個活動,因此它會返回什麼樣的內容?

我必須承認,我對登錄時登錄時發起的Intent有些困惑。看起來你需要一個帶有會話狀態/證書的全局對象,而不是任何與意圖有關的事情。

+0

我喜歡繼承的想法。因此,公共基類+1中的邏輯也是如此。 – rekire 2013-04-10 09:16:06

0

你需要調用getIntent()你的發射活動

+0

正如我已經說過的,我有多個「發射器」,我想避免改變每一個活動。 – rekire 2013-04-10 09:14:04

相關問題