转移到SD卡

时间:2011-12-14 07:29:42

标签: android

我知道移动到SD卡功能可以从Android 2.2获得 我想知道有没有办法在我的程序中检测设备是否支持移动到SD卡功能,如果支持它可以移动,如果不支持则不会发生任何事情(将在手机内存中)

我的主要问题是我的应用程序支持从1.6到超过的所有设备,我无法使用

  

机器人:的installLocation = “自动”

因为它不符合以下版本2.2。那么我是否必须以编程方式进行检查和启用,如果是这样的话?我希望你能理解我的问题。

感谢。

4 个答案:

答案 0 :(得分:8)

允许在外部存储上安装并保持与低于API级别8的版本兼容:

  1. android:installLocation元素中加入值为“auto”或“preferExternal”的<manifest>属性。

  2. 保留android:minSdkVersion属性(小于“8”),并确保您的应用程序代码仅使用与该级别兼容的API。

  3. 为了编译您的应用程序,请将构建目标更改为API级别8.这是必要的,因为较旧的Android库不理解android:installLocation属性,并且在应用程序存在时不会编译它。

  4. 如果您的应用程序安装在API级别低于8的设备上,则忽略android:installLocation属性,并在内部存储上安装该应用程序。

    这就是Android的Backward Compatibility所说的。

    另请参阅Applications That Should NOT Install on External StorageApplications That Should Install on External Storage

答案 1 :(得分:2)

虽然程序功能在2.2及以上版本中可用,但实际上移动到sd功能实际上并不是每部手机都可以实现,即使有内部甚至外部SD卡也是如此!

现在,在ICS和JB中,操作系统可以自行决定将应用程序移动到SD,而用户没有任何选项可以手动将应用程序移动到SD卡上或从SD卡中移出应用程序!

此行为已在Galaxy Nexus,Galaxy S3,Galaxy Tab 2,Transformer和Iconia A500上使用ICS和JB进行了测试!他们都没有移动所以sd按钮!

因此,了解用户是否可以在运行时将应用程序移动到SD仍然很有趣。

答案 2 :(得分:0)

你可以使用这个标志。只是尝试针对8级及以上的api进行编译。

确保android:minSdkVersion正确设置为4。

较旧的平台会忽略android:installLocation,而较新的平台会尊重这一点。

仅用于识别新标志的编译。

从2.2及以上版本可以转到SD卡,因此您无需明确检查它。

答案 3 :(得分:0)

这是特定于操作系统的功能,而不是特定于设备的功能。 您应检查操作系统版本。 如果SD卡在设备中不可用,它将不会自动显示移动选项。