Android的应用程序要么安装在内部存储器中,要么就安装在外部存储器中(如SD卡)。那么如何控制App的安装位置呢。
原来在工程中的 AndroidManifest.xml 文件中的<manifest>标签中有个 android:installLocation 属性,这个属性可以设置为三种值:
(1) "internalOnly" :如果这是成这个值那么App将只能安装在内部存储器上,用户可以请求将App从内部存储区移动到外部存储器中,但是如果设置了"internalOnly",那么将不允许这种移动。
(2) "auto":系统会默认将App安装在内部存储器中,但是如果内部存储器容量已满,系统就会把App安装在外部存储器上。
(3) "preferExternal" :系统会将App安装在外部存储器中,但是如果外部存储器容量已满,系统就会把App安装在内部存储器中。
※只有API Level > 7 的版本才支持将App安装在外部存储器中,不过现在基本上也见不到低于level 8的Android设备了
如果没有对 android:installLocation 属性进行设置,那么系统将默认采用"internalOnly" 值。
当用户把USB插在电脑上进行数据传输时,安装在外部存储器上的程序将会终止运行,所以这里有一些参考,罗列了如果你的App有哪些功能时不应该将你的App安装在外部存储器上:
1. 含有Service
2. 闹钟服务
3. IME (输入法)
4. 动态壁纸
5. App Widget (应用组件) //这个我也没弄懂指的是啥
6. 账户管理
7. Sync Adapter (同步适配器)
8. 设备管理
9. 监听了"boot completed"的广播接收器(Broadcast Receivers)