【问题标题】:Moving to SD card移动到 SD 卡
【发布时间】:2011-12-14 07:29:42
【问题描述】:

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

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

android:installLocation="auto"

因为它在 2.2 以下版本中无法识别。那么我是否必须以编程方式进行检查和启用,如果是的话怎么办?希望你能理解我的问题。

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

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

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

    当您的应用程序安装在 API 级别低于 8 的设备上时,android:installLocation 属性将被忽略,并且应用程序安装在内部存储上。

    这就是 Android 的 Backward Compatibility 所说的。

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

    【讨论】:

    • 谢谢。那行得通。我必须通过编辑项目属性来更改构建目标(在 Eclipse 中右键单击项目),并选择至少 API 级别 8 的目标
    • 欢迎 :).. 享受编码.. :)
    • @LalitPoptani:谢谢你的朋友。之间我刚刚从 Android 的 Dev 复制。网站(在答案中也提到)。
    【解决方案2】:

    虽然从 2.2 及更高版本开始提供程序化功能,但实际上并非每部手机都可以实际迁移到 sd 功能,即使有内部甚至外部 SD 卡也是如此!

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

    此行为已在 Galaxy Nexus、Galaxy S3、Galaxy Tab 2、Transformer 和 Iconia A500 以及 ICS 和 JB 上进行了测试!他们都没有 move-so-sd 按钮!

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

    【讨论】:

      【解决方案3】:

      这是一个特定于操作系统的功能,并非特定于设备。 您应该检查操作系统版本。 如果设备中没有 sd 卡,它不会自动显示移动选项。

      【讨论】:

        【解决方案4】:

        你可以使用这个标志。只需尝试针对 api 级别 8 及更高级别进行编译。

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

        旧平台将忽略android:installLocation,而新平台将尊重它。

        编译只是为了识别新标志。

        从 2.2 及更高版本开始提供移动到 sd 卡,因此您不必明确检查它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-18
          • 2020-01-11
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          • 1970-01-01
          相关资源
          最近更新 更多