- Android App開發從入門到精通
- 安輝編著
- 833字
- 2019-07-30 17:30:36
1.8 應用清單文件
每個應用的根目錄中都必須包含一個清單文件(AndroidManifest.xml)。該文件向Android系統提供應用的必要信息,系統必須具有這些信息才能運行應用的任何代碼。
此外,清單文件還包含以下功能:
? 為應用設置包名。軟件包名稱是當前應用的唯一標識符。
? 描述應用的各個組件,包括Activity、服務、廣播接收器和內容提供者。它還為實現每個組件的類命名并發布其功能,例如它們可以處理的Intent消息。這些聲明向Android系統告知有關組件以及可以啟動這些組件的條件的信息。
? 確定應用組件的進程。
? 聲明應用有哪些權限,還聲明其他應用與該應用組件交互所需具備的權限。
? 聲明應用需要的最低Android API級別。
1.8.1 清單文件結構
下面的代碼段顯示了清單文件的通用結構以及可以包含的每個元素。

1.8.2 文件約定
適用于清單文件中所有元素和屬性的約定和規則。
1. 元素
只有<manifest>和<application>元素是必需的,這兩個元素都只能有一個并且必須唯一。其他大部分元素可以出現多次或者根本不出現,但清單文件中必須存在其中某些元素才有效。元素的值通過屬性進行設置。
同一級別的元素不區分先后順序。例如,<activity>、<provider>和<service>元素可以按任何順序混合在一起。
2. 屬性
所有的屬性都是可選的,但是有些元素必須要指定屬性才能有效。
除了根<manifest>元素的一些屬性外,所有屬性名稱均以android:前綴開頭。例如,android:alwaysRetainTaskState。
3. 聲明類名
有很多元素可以指定java類,例如<application>、Activity(<activity>)、服務(<service>)、廣播接收器(<receiver>)以及內容提供者(<provider>)。

如果我們沒有給manifest指定package屬性,寫法如下:

4. 多個值
如果指定多個值,就一直重復增加這個元素,而不是給一個元素賦多個值。例如,intent過濾器可以有多個:

5. 權限
權限是一種限制,用于限制對部分代碼或設備數據的訪問。增加限制是為了保護可能被誤用以致破壞或損害用戶體驗的關鍵代碼。
如果應用需要訪問受權限保護的功能,就必須在清單中使用<uses-permission>元素聲明應用需要該權限。
將應用安裝到設備上之后,安裝程序會通過檢查簽署應用證書的頒發機構并(在某些情況下)詢問用戶,確定是否授予請求的權限。如果授予權限,則應用能夠使用受權限保護的功能。否則,訪問這些權限保護的功能會失敗,并且不會向用戶發送任何通知。