android关于installLocation

以下内容主要参考自官网的描述。

从Android API-8开始,android允许你将应用程序安装到外部存储空间中去(比方:SD卡),你可以在AndroidManifest.xml中添加android:installLocation属性来声明应用安装的位置。如果你没有声明android:installLocation属性,那么你的应用默认只会被安装到内部存储空间中且不能移动到SD卡中。为了让系统能够将你的应用程序安装到外部存储中,你可以在AndroidManifest.xml文件中设置installLocation的值为auto或者preferExternal.

如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    android:installLocation="preferExternal"    ... >。如果你将installLocation的属性声明为preferExternal,那么你的应用将被要求安装在外部存储空间中。即使是这样系统仍然不保证你的应用一定会被安装到外部存储空间,如果你的外部存储空间已经满了,系统仍然可能将你的应用程序安装到内部存储空间中。用户仍然可以将应用程序在内部存储空间与外部存储空间进行移动.

如果你将installLocation的属性声明为auto,你的应用程序可能会被安装在外存储空间中,但是你没有特指安装的位置,由系统根据一些因素去决定你的应用程序安装位置,当然用户也可以将应用程序在内部存储空间与外部存储空间之间进行移动。

当你的应用程序被安装在外部存储空间中,需要知道以下几点

1,将应用程序安装到外部存储空间中,并不会影响程序的性能,只要外部存储被挂载到设备上即可。

2,apk文件将被存储到外部存储空间中,但是用户数据,数据库,dex文件以用解压后的本地代码仍然会被存储到内部存储空间中。

3,应用程序会对应用唯一的容器,此容器是一个被加密过的随机数,解密只能通过应用程序原始安装位置。

4,用户可以通过系统设置将应用程序移到内部存储空间。

特别要注意:当用户通过USB大容量存储共享文件或者通过系统设置将sdcard unmount时,外部存储将从设从设备上unmount,此时正在运行的被安装在外部存储空间的应用程序将被kill掉。

应用程序能够被安装到外部存储空间这一特性只能适用于设备的API版本在8及以上才可以。低于8,应用程序将被安装到内部存储空间且不能够被移动到外部存储空间。由于目前大部分的设备的API版本通常都在8以下,所以这里对于API版本小于8的情况不予说明。

以下情况下的应用程序不应该安装在安装在外部存储空间中。当用户通过USB大容量存储与电脑共享文件时,任何正在运行且被安装在外部存储的应用程序都将被kill.kill应用程序,有时对用户是不可见的,这种情况下的应用程序被kill掉了将会非常严重。如果你的应用程序具备以下特征且你想让你的应用程序按照你所预想的那样运行,你最好不要将应用程序安装到外部存储空间。

1,Services. 正在运行的Service被kil掉将不会重启在外部存储设备重新挂载时。但是你可以通过intent注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播,它会通知被安装到外部存储的应用程序系统的外部存储又可以再用了,这时你就可以重启你的service了

2.Alarm Services  通过AlarmManager注册的alarms会被取消,当外部存储重新挂载时,你必须手动再次注册。

3,Input Method Engines你的输入法将会被默认输入法代替。当外部存储重新挂载时,用户可以能过系统设置重新激活它。

4,Live Wallpapers此情况与上面第3种情况类似,正在运行的动态壁纸将会被默认壁纸代替,当外部存储重新挂载时,用户可以再次选择此动态壁纸。

5,App Widgets你的App Widgets将会从桌面上被移除。当外部存储重新挂载时,你的App Widgets仍然不可用,除非你重新设置桌面应用。

6,Account Managers通过AccountManager创建的帐户将会消失,直到外部存储重新挂载

7,Syn Adapter与Device Administrators(暂时没有搞懂)

8,Broadcast Receivers listerning for "boot completed"由于系统发送的ACTION_BOOT_COMPLETED广播在外部存储挂载前,所以安装在外部存储的应用程序都收不到此广播即开机广播。
时间: 2024-11-16 09:26:42

android关于installLocation的相关文章

实例解读AndroidManifest.xml

随手找了一份文件进行解读 内容如下 <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.qiqqzll.zjrlpzz" platformBuildVersionCode="23" platformBuildVersionName=&

android:installLocation = &quot;auto&quot; 的用法

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string&

android:installLocation简析

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示: <manifest xmlns:android="http://schemas.android.com/apk/res/android"          package=&quo

简析android:installLocation

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-4-1  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ 在Froyo(android 2.2,API Level:8)中引入了andro

【移动开发】android:installLocation

android:installLocation The default install location for the application. The following keyword strings are accepted: Value Description "internalOnly" The application must be installed on the internal device storage only. If this is set, the app

Android的配置设置

保留的 Android 清单设置 Android 权限 Android 自定义 URI 方案 Android 兼容性筛选 安装位置 在 StageWebView 对象中启用 Flash Player 和其他插件 颜色深度 在 Android 平台上,可以使用应用程序描述符的 android 元素将信息添加到 Android 应用程序清单,该清单是 Android 操作系统使用的应用程序属性文件.创建 APK 包时,ADT 会自动生成 Android Manifest.xml 文件.AIR 会将几

Android真机调试Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE原因及解决方法

在eclipse中运行Android程序默认是将程序安装到手机的Rom中,如果Rom空间不足,就会提示这个错误. 知道了原因后,解决方案有了,最简单的有如下两种: 1 删除一些应用,腾出更多的rom空间: 2 将程序安装到SD卡中,打开AndroidManifest.xml,添加如下配置: <manifest ... android:installLocation="preferExternal">(添加加这行代码)

Android数据保存之文件保存

前言: 上一篇文章写了在Android中利用SharedPreferences保存数据,SharedPreferences在保存数据的时候主要是保存一些应用程序的设置信息或者少量的用户信息,而且是以key-value形式保存的String类的信息,比較有局限性. 比方你须要保存从网络获取的图片到本地作为缓存数据,而且数量比較大.SharedPreferences就不能满足你的需求了,这个时候就要用到基本上全部平台都会用到的文件保存. Android中以文件形式把数据保存到磁盘上与其它平台基本上都

Unity与Android交互-Unity接入高德地图实现定位以及搜索周边的功能(使用Android Studio)详细操作

刚进公司给安排的任务就是Unity接入高德地图,算是踩了不少坑总算做出来了,抽点时间写个博客记录一下 废话不多说 先上效果图 获取定位并根据手机朝向显示周边信息            使用的Unity版本为5.5,Androad Studio 2.3.1 接下来开始讲具体操作 首先是Androad Studio的基本配置 1.创建工程,空白的就行,反正也用不到界面布局 等待创建完成 2.新建库模块: 切换到Project视图 右击你的项目 新建一个库模块-用来负责与Unity交互 当然你也可以不