Android基礎之一:Manifest.xml

  • Manifest.xml是Android應用程序(Android Application)開發的基礎配置文件,處於項目工程的最底層,全名爲AndroidManifest.xml
  • 首先Manifest文件是一個xml文件,必須符合xml文件定義規範
    • XML文件定義聲明:<?xml version="" encoding="utf-8"?>
    • 關鍵xml節點-->manifest
      • 屬性:xmlns:android="https://schemas.android.com/apk/res/android",值基本固定不變
      • 屬性:package="packageName",應用程序的包名,包名能夠隨便定義,不必定是存在的包的名稱,可是爲了在Activity、Receiver、Service指向的類可以簡單化,一般包名定義爲應用程序的主包名
      • 屬性:android:versionCode="" 是一個應用程序內部版本,這個版本是開發者使用的,以及發佈應用程序使用的,可是外部用戶是看不見的,市場經過這個字段來判斷是否有更新
      • 屬性:android:versionName="" 是應用程序的外部版本,這個版本是給用戶看的,通常在應用程序的關於中顯示,實際與升級沒有任何關係,可是爲了保證同步,升級後versionName也相應增長
      • 屬性:android:installLocation="",包括三個值(auto,internalOnly,preferExternal),分別表示系統選擇、只安裝到內部存儲中、優先安裝到外部存儲中(沒有外部存儲或者外部存儲容量不足時纔會轉內部存儲),一般使用auto,由系統判斷,可是有些加載大量資源的應用,如遊戲,離線地圖等通常都安裝在外部存儲中,普通的應用優先安裝在內部存儲中
      • 屬性:android:sharedUserId="",Android的應用程序通常運行都在不一樣進程中的,不能直接進行數據資源共享,而經過兩種方法可以實現應用之間的數據共享,一種是ContentProvider,這裏不作介紹,另外一種就是經過配置兩個應用程序的sharedUserId相同來實現
      • 屬性:android:sharedUserLabel="",用戶可讀的字符串,沒有什麼實際做用,只有在具備sharedUserId的時候纔有用
    • 子節點:
      • application
      • activity
      • receiver
      • service
      • provider
      • meta-data
      • uses-sdks
      • uses-feature
      • uses-configuration
      • activity-alias
      • permission
      • uses-permission
      • support-screen
  • 在代碼中獲取manifest中某些屬性:經過PackageInfo來獲取,flag傳遞0,若是獲取權限,使用PackageManager.GET_PERMISSIONS
    PackageInfo packageInfo = getPackageManager().getPackageInfo("com.example.AndroidTest_01", PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
  • 不一樣應用數據共享:sharedUserId配置相同,在一個應用中能夠經過另外一個應用的包名建立其全局上下文對象
    Context context=createPackageContext("com.example.AndroidTest_01",Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
    • 建立引用上下文對象須要知道其包名,而且配置flag爲包含代碼與忽視安全機制
    • 經過該Context實例可以訪問另外一個應用中的任何開放資源

 

  • Manifest基本結構
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="com.example.AndroidTest_01"
          android:versionCode="1"
          android:installLocation="preferExternal"
          android:sharedUserId="com.tiza"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <application
            android:label="@string/app_name"
            android:allowClearUserData="true"
            android:theme="@android:style/Theme.Holo.Light"
            android:icon="@drawable/ic_launcher">
        <activity
            android:name="MyActivity"
            android:launchMode="standard"
            android:windowSoftInputMode="adjustResize"
            android:icon="@drawable/back6"
            android:label="主頁">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".TAct"
                  android:icon="@drawable/logo"
                  android:parentActivityName=".MyActivity"
                  android:label="TAct">
        </activity>
        <service android:name=".MService"/>
    </application>
</manifest>
相關文章
相關標籤/搜索