【问题标题】:Confusion in External Storage in androidandroid中外部存储的混乱
【发布时间】:2016-11-08 03:45:18
【问题描述】:

1)问题

我在清单中使用了 installLocation

 android:installLocation="preferExternal"

如果我错了,请纠正我。 android:installLocation="preferExternal" 让您的应用安装在外部 sdcard 上。如果这是真的,那么当 sdcard 被移除时我应该无法使用 myapplication 。但是,即使我从设备中删除了 sdcard,我也可以使用 myapplication

2)问题

我设备上的 sdcard0 和 extsdcard 有什么区别? 即使我在清单中使用

android:installLocation="preferExternal"

所有应用程序文件都存储在 sdcard0 上,即使我的设备中有 sdcard 也可以访问它。我使用以下方法将文件存储在 sdcard 上

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

那么在什么情况下我的文件会存储在我的 SD 卡上? 以及如何将文件存储在 extsdcard 上?

【问题讨论】:

标签: android android-sdcard android-external-storage


【解决方案1】:

1) 如文档中所述:

如果您声明“preferExternal”,则您要求您的应用程序是 安装在外部存储上,但系统不保证 您的应用程序将安装在外部存储上。

卸载外部存储意味着安装在那里的所有正在运行的应用程序将立即被终止。如果您仍然可以使用您的应用,我认为有两个可能的原因:系统决定将您的应用安装在内部存储上,或者您的设备还具有模拟的“外部”存储,并且您的应用已安装在那里。

2)

我设备上的 sdcard0 和 extsdcard 有什么区别

sdcard0 指的是设备内部存储,而extsdcard 指的是可能是物理的或模拟的外部存储,这是很常见的。但是,没有可靠的命名约定,这取决于供应商。

另请注意,Android 的“外部”基本上是指“用户可以访问的存储”。
一些可能有帮助的进一步步骤:

  • 使用 ADB Shell 检查设备的存储结构,连接和分离 SD 卡

  • 从“应用”设置菜单验证您应用的安装位置

  • 记录Environment类的不同方法提供的目录绝对路径

注意:一般来说,您不应该依赖对应用安装位置的假设,因为这可能会给您在某些设备上带来麻烦

【讨论】:

  • extsdcard 上将存储哪些条件文件?因为每当我使用 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
  • 你用那个目录做什么?你要下载一些文件吗?另外,请记录下载目录的绝对路径(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()
  • 不,我没有下载任何东西。我只是将图像文件存储到它以进行练习。我的问题是如何将我的文件存储在 extsdcard 上,或者在什么情况下它将我的图像存储到 extsdcard ,因为我的图像文件进入 sdcard0
  • @FaisalAhmed Environment.getExternalStorageDirectory() 通常应该为您提供外部存储(如果可用)
猜你喜欢
  • 2013-10-25
  • 2020-09-14
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
相关资源
最近更新 更多