在Android中将应用程序移动到SD卡时会发生什么

Kar*_*hik 6 security android

我想知道,

  1. 将应用程序从内部存储移动到SD卡时,应用程序数据/数据库文件/等会发生什么变化,反之亦然?

我还有一个安装在外部存储中的应用程序.我正在升级应用程序.该应用程序的最新版本具有标志,仅限于在内部存储中安装.

  1. 这个最新的应用程序会安装在内部存储中吗?系统会自动将应用程序数据从外部移动到内部还是先前安装的数据丢失?

Jor*_*lla 3

实际上,这似乎不是一个程序性问题,更像是一个Android OS问题。

第一的。作为开发人员,您无法选择应用程序的安装方式,但从 Android 2.2 开始,您可以选择WHERE

API 级别 8 之前构建的现有应用程序将始终安装在内部存储上,并且无法移动到外部存储

从 Android API 8 开始:

android:installLocationInternalOnly
仅在内部存储上安装应用程序。如果设备内部存储空间不足,这将导致存储错误。

PreferredExternal: Android 系统尝试在外部存储上安装应用程序。如果已满,则应用程序将安装在内部存储上。

auto:让Android系统决定应用程序的最佳安装位置。默认系统策略是首先在内部存储上安装应用程序。如果系统存储空间不足,则应用程序将安装在外部存储上。

只要您不以编程方式定义安装/移动过程,Android 操作系统就会负责从内部到外部的移动(如果可能),反之亦然。但作为程序员,您必须小心正在开发的应用程序类型,以了解是否应该允许此选项

警告:当用户启用 USB 海量存储与计算机共享文件或通过系统设置卸载 SD 卡时,外部存储将从设备中卸载,并且外部存储上运行的所有应用程序将立即被终止。

会发生什么: 只要你不决定,我们就用简单的方式解释一下。 应用程序的所有文件都移动到 SD 卡,除了内部存储中的一个小指针告诉系统应用程序所在的位置。(想象一下,如果您手动格式化 SD 卡,那么您的手机将不知道应用程序已消失)但如果您卸载它,手机将允许您访问。

默认情况下,第二个应用程序更新将尝试保留其安装位置,但应用程序开发人员可能会更改更新中的 installLocation 字段。在旧设备上安装具有此新属性的应用程序不会破坏兼容性,并且这些应用程序将仅安装在内部存储上。这意味着,只要应用程序保持相同的标识符(如果是市场应用程序,则还需要签名),旧数据就会被移动。

来源/来源

优点/缺点

要在升级应用程序时保留/更新数据库文件/配置,请检查此处此处