- Android 5從入門到精通
- 李波
- 1319字
- 2021-03-19 15:29:00
3.4 Manifest文件
每一個Android項目都包含一個清單(Manifest)文件AndroidManifest.xml,它是XML格式的Android程序聲明文件,包含了Android系統(tǒng)運行程序前所必須掌握的重要信息,這些信息包含應用程序名稱、圖標、包名稱、模塊組成、授權(quán)和SDK最低版本等,而且每個Android程序必須在根目錄下包含一個AndroidManifest.xml。
例如,Manifest文件可以使用如下代碼聲明一個activity:
<?xml version="1.0" encoding="utf-8"?> <manifest ... > <application android:icon="@drawable/app_icon.png" ... > <activity android:name="com.example.project.ExampleActivity" android:label="@string/example_label" ... > </activity> ... </application> </manifest>
AndroidManifest.xml中可包含的所有標簽元素如以下代碼所示,其中除了<manifest>和<application>標簽是必需的,其他所有標簽都可按情況添加。
<?xml version="1.0" encoding="utf-8"?> <manifest> <uses-permission /> <permission /> <permission-tree /> <permission-group /> <instrumentation /> <uses-sdk /> <uses-configuration /> <uses-feature /> <supports-screens /> <compatible-screens /> <supports-gl-texture /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> <meta-data /> </activity> <activity-alias> <intent-filter>. . .</intent-filter> <meta-data /> </activity-alias> <service> <intent-filter>. . .</intent-filter> <meta-data/> </service> <receiver> <intent-filter>. . .</intent-filter> <meta-data /> </receiver> <provider> <grant-uri-permission /> <meta-data /> </provider> <uses-library /> </application> </manifest>
在此,僅對幾種常見的標簽進行簡單介紹。
(1)manifest標簽
manifest標簽是AndroidManifest.xml文件的根標簽,該標簽用于設置與項目相關的一些屬性,比如用于唯一標識應用程序的package屬性,用于記錄應用程序版本的Android:versionName屬性等。其中的xmlns:Android屬性必須被定義為:“http://schemas.Android.com/apk/res/Android”。
(2)application標簽
manifest標簽僅能包含一個application標簽,它使用各種屬性來指定應用程序的各種元數(shù)據(jù)(包括標題、圖標和主題)。它還可以作為一個包含了活動(Activity)、服務(Service)、內(nèi)容提供器(Provider)和廣播接收器(BroadcastReceiver)標簽的容器,用來指定應用程序組件。
●activity標簽。應用程序顯示的每一個Activity都要求有一個activity標簽,并使用Android:name屬性來指定類的名稱。這必須包含核心的啟動Activity和其他所有可以顯示的屏幕或者對話框。啟動任何一個沒有在清單中定義的Activity時都會拋出一個運行時異常。每一個Activity節(jié)點都允許使用intent-filter子標簽來指定哪個Intent啟動該活動。
●service標簽。和activity標簽一樣,應用程序中使用的每一個Service類都要創(chuàng)建一個新的service標簽。(Service標簽也支持使用intent-filter子標簽來允許后面的運行時綁定。)
●provider標簽。provider標簽用來說明應用程序中的每一個內(nèi)容提供器。內(nèi)容提供器是用來管理數(shù)據(jù)庫訪問以及程序內(nèi)和程序間共享的,第6章將會對其進行詳細講述。
●receiver標簽。通過添加receiver標簽,可以注冊一個廣播接收器(Broadcast Receiver),而不用事先啟動應用程序。廣播接收器就像全局事件監(jiān)聽器一樣,一旦注冊了之后,無論何時,只要與它相匹配的intent被應用程序廣播出來,它就會立即執(zhí)行。通過在聲明中注冊一個廣播接收器,可以使這個進程實現(xiàn)完全自動化。如果一個匹配的Intent被廣播了,則應用程序就會自動啟動,并且你注冊的廣播接收器也會開始運行。
(3)uses-permission標簽
作為安全模型的一部分,uses-permission標簽聲明了那些自己定義的權(quán)限,而這些權(quán)限是應用程序正常執(zhí)行所必需的。在安裝程序時,設定的所有權(quán)限將會告訴給用戶,由他們來決定同意與否。對很多本地Android服務來說,權(quán)限都是必需的,特別是那些需要付費或者有安全問題的服務(例如,撥號、接收SMS或者使用基于位置的服務)。第三方應用程序,包括你自己的應用程序,也可以在提供對共享的程序組件進行訪問之前指定權(quán)限。
(4)permission標簽
在可以限制訪問某個應用程序組件之前,需要在清單中定義一個permission。可以使用permission標簽來創(chuàng)建這些權(quán)限定義。然后,應用程序組件就可以通過添加Android: permission屬性來要求這些權(quán)限。其他的應用程序就需要在它們的清單中包含uses-permission標簽(并且通過授權(quán)),之后才能使用這些受保護的組件。在permission標簽內(nèi),可以詳細指定允許的訪問權(quán)限的級別(normal、dangerous、signature,signatureOrSystem)、一個label屬性和一個外部資源,這個外部資源應該包含了對授予這種權(quán)限的風險的描述。
(5)instrumentation標簽
Instrumentation類提供一個框架,用來在應用程序運行時在活動或者服務上運行測試。它們提供了一些方法來監(jiān)控應用程序及其與系統(tǒng)資源的交互。對于為自己的應用程序所創(chuàng)建的每一個測試類,都需要創(chuàng)建一個新的節(jié)點。
- Qt 5 and OpenCV 4 Computer Vision Projects
- Facebook Application Development with Graph API Cookbook
- Learning Cython Programming(Second Edition)
- OpenCV 3和Qt5計算機視覺應用開發(fā)
- Java技術手冊(原書第7版)
- 基于免疫進化的算法及應用研究
- C語言程序設計實踐教程
- 名師講壇:Spring實戰(zhàn)開發(fā)(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- AppInventor實踐教程:Android智能應用開發(fā)前傳
- Working with Odoo
- AIRIOT物聯(lián)網(wǎng)平臺開發(fā)框架應用與實戰(zhàn)
- 網(wǎng)絡數(shù)據(jù)采集技術:Java網(wǎng)絡爬蟲實戰(zhàn)
- 深入實踐DDD:以DSL驅(qū)動復雜軟件開發(fā)
- 監(jiān)控的藝術:云原生時代的監(jiān)控框架
- Data Manipulation with R(Second Edition)