1. 程式人生 > >Android 開發中的 Manifest.xml 配置檔案詳解

Android 開發中的 Manifest.xml 配置檔案詳解

    AndroidManifest.xml 是一個非常重要的功能清單檔案。每一個應用程式的根目錄裡都有這個功能清單檔案,這個清單檔案給Android系統提供了關於這個應用程式的基本資訊,系統在執行任何程式程式碼之前必須知道這些資訊。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  //用來指定該檔案的名稱空間
          package="com.bignerdranch.android.criminalintent">  //指定Android應用所在的包
<application android:allowBackup="true" //為true時,使用者即可通過adb backup和adb restore來進行對應用資料的備份和恢復,這可能會帶來一定的安全風險。 android:icon="@mipmap/ic_launcher" //用來設定應用程式的圖示 android:label="@string/app_name" //用來設定應用程式的名稱 android:supportsRtl="true" //宣告你的application是否願意支援從右到左(原來RTL就是right-to-left 的縮寫)的佈局,只是是否願意,不是立馬從右到左。
android:theme="@style/AppTheme"> //應用的樣式主題,該主題在當前應用包的style.xml中定義 <activity android:name=".CrimeActivity" //指定的是該Activity的類名,“.”代表的是<manifest>元素的“package”屬性中指定的當前包。activity只能放在應用包(manifest下package定義的路徑)或者其子包裡面,而不能再應用包以外的包中定義,這點需要牢記。 android:label="@string/app_name" > //表示Activity所代表的螢幕的標題,該屬性值在AVD執行程式到該Activity所代表的介面時,會在標題上顯示該值。
</activity> <activity android:name=".CrimeListActivity"> <intent-filter> //設定隱式intent過濾器 <action android:name="android.intent.action.MAIN" /> //標識Activity為一個程式的開始 <category android:name="android.intent.category.LAUNCHER" /> //決定activity 應該顯示在頂級應用啟動器裡Main和LAUNCHER同時設定才有意義 </intent-filter> </activity>
<provider  //

為了提高私有檔案的安全性,在targetSdk版本為N或者以後版本的app中,其私有目錄將會限制訪問。這可以防止私有檔案元資料的洩露,比如檔案大小或者是檔案是否存在。但這給開發者帶來了很多不利的影響:檔案的owner不能放寬檔案許可權,如果你使用MODE_WORLD_READABLE或者 MODE_WORLD_WRITEABLE操作檔案,將會觸發SecurityException。當你跨package域傳遞file://的URI時,接收者得到的將是一個無權訪問的路徑,因此,這將會觸發FileUriExposedException。對於這類操作,官方推薦的方式是使用FileProvider,當然你也可以使用ContentProvider。在targetSdk為Android N之前的系統版本時,不需要這個配置。

android:name="android.support.v4.content.FileProvider" android:authorities="com.bignerdranch.android.criminalintent.fileprovider"//當前app的包名 + fileproviderandroid:exported="false" //要求必須為false,為true則會報安全異常
android:grantUriPermissions="true">//表示授予 URI 臨時訪問許可權
    <meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/> //資原始檔下建立相應的資料夾路徑xml檔案的檔名
</provider>
</application>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                     android:maxSdkVersion="18"        />申請外部儲存讀許可權,只有API級別小於19的android裝置上,應用才需要這樣的許可權申請
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />宣告應用需要有照相功能的裝置,但也不是必須的。
</manifest>