Android应用可以安装在本机自带存储,同时也可以安装到外部存储(SD卡)。自从API 8后也就是Android2.2后,我们能使APK安装到外部存储上。这是一个可选的特性,在工程的manifest文件中可以进行配置:
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferEx
如上,如果声明为preferExternal,则指定APK安装到外部存储上,但是系统不保证一定能安装到外部存储上,所以叫 preferExternal,例如当外部存储空间已经满了,这时系统会将应用程序安装到内部存储上。用户能够在内部存储与外部存储之间移动应用程序。还 有一种声明选择,那就是“auto”,如果将属性值声明为这个,安装位置将由系统去决定。
想要将应用程序安装到外部存储上,需要保证以下条件都满足:
1.在manifest文件中指定android:installLocation属性值为“preferExternal”或“auto";
2.确保当前系统API级别为8或以上,android:minSdkVersion值必须是8以上(Android 2.2);
需要特别注意的是,用户连接手机到PC并开启大容量存储模式时,也就是读取外部存储卡内容时,所有安装到外部存储的应用程序将会被系统全部杀掉!
如果你的应用中存在在以下情况下,应用程序不推荐安装到外部存储上:
1.应用程序中有运行后台Service
2.注册了通知服务例如AlarmManager
3.第三方输入法,如果将第三方输入法安装到外部存储上,如果当前外部存储被挂起,则第三方输入法会失效并切回系统输入法
4.墙纸主题应用,外部存储被挂起时,会切换为系统默认墙纸或主题
5.App桌面组件工具,外部存储被挂起是,会将Widgets从桌面移除
6.注册了开机广播的应用,因为系统是先发出开机广播然后再加载外部存储设备的,这里有个顺序问题