David.Ko

          Follow my heart!
          posts - 100, comments - 11, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          【轉】Manifest 概述

          Posted on 2009-10-28 13:47 David.Ko 閱讀(284) 評論(0)  編輯  收藏 所屬分類: Android
          轉載自:http://blog.csdn.net/xieyali/archive/2009/07/05/4323575.aspx

          任何 Android應用程序的基礎都是 Manifest文件: Manifest.xml,這個文件保存在工程的根目錄下。在這個文件里聲明應用程序用到的所有組件,例如: activities services,等等,而且說明這些組件如何組織到應用程序系統中;例如:可以表明哪一個 activity(或者 activities)應該出現在設備的主窗口中(例如: launcher)。

          當你創建工程時,系統幫助生成一個原始的 manifest文件。對于只包含一個 activity的簡單的應用程序,原始的 manifest文件夠了,或者只需要很小的改動。另外, manifest也可以很復雜,比如 Android自帶的 API樣例,該文件就超過 1000多行。你的應用程序的 manifest行數大概也就介于此間吧。

          manifest文件的大部分有趣的功能會在以后相應的章節更加詳細的介紹。比如 service元素會在創建 service章節詳細講述。現在,主要關注 manifest文件的作用和它的一般結構。

          在文件開始,有根,文件基本上就正確

          manifest文件的根是這樣一個 manifest元素:

          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.commonsware.android.search">
                ...
          </manifest>

          注意命名空間聲明。奇怪的是,自動生成的 manifest文件,命名空間是應用在屬性上,而不是元素上(例如,是 manifest,不是 android:manifest),然而,這種形式工作正確,只要 android不發生改變,就堅持用這種形式。

          根元素 manifest里面最有用的信息是 package屬性(奇怪的是 package前沒有命名空間)。這里,你可填成你的 java package的名子,以后在 manifest文件里,如果需要類的名子,就可以用點來代替 package的名子,例如:如果在 manifest文件需要引用 com.commonsware.android.search.Snicklefritz,你就可以寫成 .Snicklefitz,因為 com.commonsware.android.search已經被定義成應用程序的包。

          權限,特殊工具,和應用程序

          manifest元素里有如下子元素:

          uses-permission元素,表示應用程序必須據有這些權限才能工作正常- permissions章節

          permission元素,定義一些權限,當其它的程序如果想使用你的程序的數據或者邏輯時,必須據有這些權限,參考 permissions章節

          instrumentation元素,表示某些代碼,當一些重要的系統事件發生時,這些代碼被調用,例如:啟動一個 activities,打印 log或者監視某些信息。

          uses-library元素,掛鉤( hook)進可選的 android組件里,例如 mapping services

          application元素,定義 manifest描述的應用程序的細節。

          在上面的例子中, uses-permission元素表明了應用程序將要使用的一些設備的功能,在這個例子中,就是程序據有了定位自己的功能。 applicaton元素描述了一些 activities serives和其它組成應用的一些組件。

          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
             package="com.commonsware.android">
              <uses-permission
                   android:name="android.permission.ACCESS_LOCATION" />
              <uses-permission
                   android:name="android.permission.ACCESS_GPS" />
              <uses-permission
                   android:name="android.permission.ACCESS_ASSISTED_GPS" />
              <uses-permission
                    android:name="android.permission.ACCESS_CELL_ID" />
              <application>
                   ...
              </application>
          </manifest>

          應用程序需要實現一些功能,對嗎?

          manifest文件最重要的部分就是 application元素的子元素。

          創建新工程時,默認生成只含一個 activity元素的 manifest文件,如下:

          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.commonsware.android.skeleton">
               <application>
                       <activity android:name=".Now" android:label="Now">
                            <intent-filter>
                               <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                            </intent-filter>
                      </activity>
                 </application>
          </manifest>

          這個 activity元素提供了如下信息, android:name-實現 activity的類;和 android:label-當運行 activity時顯示的名字; intent-filter子元素-描述在什么條件下 activity才顯示。這個 activity元素設置在運行時顯示這個 activity,現在你可以運行它了。在后面的章節,會看到有多個 activities的工程。

          可能還會有一個或者多個 receiver元素,表示在一定條件下,一些非 activites組件需要被觸發,例如收到一條短信。這被稱作是 intent receivers,在后續章節會講到。

          可能還會有一個或者多個 provider元素,表示 content providers組件,它們負責提供數據給 activities使用,并且,如果有權限,其它應用程序也可以使用它們提供的數據。它們把數據庫或者其它數據存儲包裝成一個接口 供其它應用程序使用。后續章節會講怎么創建 content provides和如何使用 content provides。

          最后,可能會有一個或者多個 service元素,描述 services-獨立于 activity,并且長期運行的一些代碼片段。最好的例子就是 mp3播放器,你想邊聽音樂,邊打開其它 activities,這時候 mp3播放器的使用界面被覆蓋。后面有兩章會講如何創建和使用 services。



          主站蜘蛛池模板: 周口市| 嘉禾县| 沙湾县| 常熟市| 锦屏县| 九龙坡区| 多伦县| 佛学| 扬中市| 万年县| 布尔津县| 宜川县| 榆中县| 大冶市| 象州县| 洪湖市| 新民市| 长寿区| 温州市| 乌鲁木齐县| 乌拉特中旗| 锦屏县| 惠安县| 柳江县| 岢岚县| 仙桃市| 松江区| 沙坪坝区| 台中县| 于田县| 饶河县| 河源市| 府谷县| 延安市| 石林| 马尔康县| 时尚| 裕民县| 泸水县| 汕尾市| 安图县|