Android應用能夠安裝在本機自帶存儲,同時也能夠安裝到外部存儲(SD卡)。自從API 8後也就是Android2.2後,咱們能使APK安裝到外部存儲上。這是一個可選的特性,在工程的manifest文件中能夠進行配置: android
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" ... >
如上,若是聲明爲preferExternal,則指定APK安裝到外部存儲上,可是系統不保證必定能安裝到外部存儲上,因此叫preferExternal,例如當外部存儲空間已經滿了,這時系統會將應用程序安裝到內部存儲上。用戶可以在內部存儲與外部存儲之間移動應用程序。還有一種聲明選擇,那就是「auto」,若是將屬性值聲明爲這個,安裝位置將由系統去決定。
想要將應用程序安裝到外部存儲上,須要保證如下條件都知足: 工具
1.在manifest文件中指定android:installLocation屬性值爲「preferExternal」或「auto"; spa
2.確保當前系統API級別爲8或以上,android:minSdkVersion值必須是8以上(Android 2.2); code
須要特別注意的是,用戶鏈接手機到PC並開啓大容量存儲模式時,也就是讀取外部存儲卡內容時,全部安裝到外部存儲的應用程序將會被系統所有殺掉! xml
若是你的應用中存在在如下狀況下,應用程序不推薦安裝到外部存儲上: get
1.應用程序中有運行後臺Service io
2.註冊了通知服務例如AlarmManager class
3.第三方輸入法,若是將第三方輸入法安裝到外部存儲上,若是當前外部存儲被掛起,則第三方輸入法會失效並切回系統輸入法 後臺
4.牆紙主題應用,外部存儲被掛起時,會切換爲系統默認牆紙或主題 配置
5.App桌面組件工具,外部存儲被掛起是,會將Widgets從桌面移除
6.註冊了開機廣播的應用,由於系統是先發出開機廣播而後再加載外部存儲設備的,這裏有個順序問題