我想知道,
我还有一个安装在外部存储中的应用程序。我正在升级应用程序。该应用程序的最新版本具有标志,仅限于在内部存储中安装。
答案 0 :(得分:2)
实际上,这似乎不是一个程序性问题,而是一个Android OS
问题。
首先。作为开发者,您不要选择 HOW 安装您的应用,但是从Android 2.2开始,您可以选择 WHERE :
在API级别8之前构建的现有应用程序将始终安装在内部存储上,无法移动到外部存储
因为android API 8:
机器人:的installLocation
internalOnly:仅在内部存储上安装应用程序。如果设备在内部存储器上运行不足,则会导致存储错误。preferExternal: Android系统尝试在外部存储上安装应用程序。如果已满,则应用程序将安装在内部存储中。
auto:让Android系统决定应用程序的最佳安装位置。默认系统策略是首先在内部存储上安装应用程序。如果系统的存储空间不足,则应用程序将安装在外部存储上。
只要您以编程方式定义安装/移动过程,Android操作系统就会负责从内部移动到外部(如果可能),反之亦然。但作为程序员,您必须小心使用您正在开发的应用程序类型,以了解should or not allow this option
警告:当用户启用USB海量存储与计算机共享文件或通过系统设置卸载SD卡时,将从设备卸载外部存储,并在外部运行所有应用程序存储立即被杀死。
会发生什么: 只要您不做决定,我们就会以简单的方式解释。 应用程序的所有文件都移动到SD卡,除了内部存储中的一个小指针,告诉系统应用程序所在的位置。 (想象一下,如果你手动格式化你的SD卡,那么你的手机就不会知道应用程序已经消失了)但是如果你卸下它,手机就会让你访问。
第二次默认情况下,应用程序更新会尝试保留其安装位置,但应用程序开发人员可能会更新更新中的installLocation字段。在旧设备上使用此新属性安装应用程序不会破坏兼容性,这些应用程序将仅安装在内部存储上。这意味着,只要应用程序保持相同的标识符(以及市场应用程序的签名),旧数据就会被移动。