我知道移动到SD卡功能可以从Android 2.2获得 我想知道有没有办法在我的程序中检测设备是否支持移动到SD卡功能,如果支持它可以移动,如果不支持则不会发生任何事情(将在手机内存中)
我的主要问题是我的应用程序支持从1.6到超过的所有设备,我无法使用
机器人:的installLocation = “自动”
因为它不符合以下版本2.2。那么我是否必须以编程方式进行检查和启用,如果是这样的话?我希望你能理解我的问题。
感谢。
答案 0 :(得分:8)
允许在外部存储上安装并保持与低于API级别8的版本兼容:
在android:installLocation
元素中加入值为“auto
”或“preferExternal
”的<manifest>
属性。
保留android:minSdkVersion
属性(小于“8”),并确保您的应用程序代码仅使用与该级别兼容的API。
为了编译您的应用程序,请将构建目标更改为API级别8.这是必要的,因为较旧的Android库不理解android:installLocation
属性,并且在应用程序存在时不会编译它。
如果您的应用程序安装在API级别低于8的设备上,则忽略android:installLocation
属性,并在内部存储上安装该应用程序。
这就是Android的Backward Compatibility所说的。
另请参阅Applications That Should NOT Install on External Storage 和Applications 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卡在设备中不可用,它将不会自动显示移动选项。