2013-12-12 49 views
8

我想創建一個活動,但不必在清單文件中聲明它。這可能嗎?我見過的每個地方似乎都必須在清單中聲明每個活動,但我注意到某些活動(如內置的ChooserActivity)未在我的清單文件中聲明。我是否需要聲明清單文件中的每個活動?

+0

ChooserActivity在另一個清單文件中聲明並公開給您的應用程序。你的目標是不把它放在清單上,這可能會幫助我回答你的問題。 – sgarman

+0

Xamarin.Android通過使用屬性自動執行它(就像Java中的註釋一樣)。也許人們可以創建一個能夠在Java中執行此操作的工具。 –

回答

13

簡答:是的,您的應用程序中的每個活動都必須在清單中聲明。由於在Android文檔中描述,清單的目的(除其他事項外)是:

它描述了應用程序的組件 - 該 應用由廣播接收器的活動,服務和內容提供商的。它命名實現組件的每個 的類併發布它們的功能(例如,它們可以處理哪些Intent消息)。這些聲明使Android 系統知道是什麼成分,並在他們可以 推出什麼樣的條件。)

http://developer.android.com/guide/topics/manifest/manifest-intro.html#ifs

因此,在您的應用程序任何活動類必須在你的清單中定義。 Intents,Services等也是如此,即使這些組件不能從您的應用程序之外訪問。

至於ChooserActivity和您沒有在代碼中定義的任何其他Activity,他們將在另一個Manifest中擁有自己的定義。如果出於任何原因您決定在您的應用程序之外劃分現有的Activity,那麼您將不得不在您的Manifest中定義它。

+1

從設計角度來說,從新人到Android,這絕對沒有意義!你不能定義不在清單中的活動,也不能有你的代碼中沒有的清單條目,那爲什麼編譯器不能爲你處理呢?將清單保留爲默認配置的異常,並讓編譯器「填寫」其餘部分!爲什麼讓我們做到這一點? ......除非我的理解錯誤,而我錯過了一些東西,在這種情況下,請分享一下,這樣我就可以學習,因爲現在的方式,它看起來像是乏味和不必要的文書工作! – MarqueIV

+0

請注意,我顯然指的是我*在應用中定義的活動*,而不是可用於我的應用的活動(即系統提供的活動等)。)如果你已經定義了這個類,你有責任將它添加到清單中,並且清單僅用於你定義的那些活動,而不是外部的那些活動,爲什麼不能由編譯器推斷那些哪些不需要顯式配置?哎呀,添加一個'ImplicitActivity'來定義那些沒有指定的默認值。 – MarqueIV

+0

您的論點可能有一些優點。然而,考慮到1)他們有一個現有的工具鏈和操作系統版本來支持2)您的項目或庫中可能存在活動/服務/廣播接收器/等,您不希望應用程序啓動/使用(例如基本Activity或AppCompatActivity)3)我不確定這些組件的默認配置是多麼有用,因爲每個組件通常都是自定義的,無論是標題,圖標,意圖過濾器,主題,啓動模式,元數據等。4)可能還有其他論點或限制 – TheIT

9

我想創建一個Activity但不必在manifest文件中聲明它。這可能嗎?

不,對不起。

我注意到有些活動,如內置ChooserActivity,在我的清單文件中未聲明

這項活動是不是你的應用程序的一部分。它是核心操作系統的一部分。

相關問題