【问题标题】:Android getting external storage Absolute PathAndroid获取外部存储绝对路径
【发布时间】:2015-12-18 15:19:22
【问题描述】:

我想下载一些文件并将它们保存到手机/标签的内部存储中。在三星 Galaxy Note 2 和 Galaxt Tab 10.1 上试用。当我在它们上使用/storage/sdcard0/ 时,代码运行成功,但是当我使用Galaxy Nexus 3 时,代码失败。

我想获取 phoe 或 tab 的内部存储的绝对路径'Absolute Path

有可能吗,如果可以怎么办?

【问题讨论】:

  • 这个问题在内部/外部之间很混淆,所以请不要将它作为任何东西的重复提出

标签: android storage


【解决方案1】:

为什么不能使用Environment.getExternalStorageDirectory() 从代码中获取/storage/sdcard0/ 路径?

还需要添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

【讨论】:

    【解决方案2】:

    当我在它们上使用 /storage/sdcard0/ 时,代码运行成功,但当我使用 Galaxy Nexus 3 时,代码失败。

    /storage/sdcard0/ 不是内部存储。它是外部存储。

    (顺便说一句,由于没有名为“Galaxy Nexus 3”的设备,我假设您只是指“Galaxy Nexus”)

    要在内部存储中为您的应用查找位置,请使用getFilesDir(),调用任何Context(例如您的Activity,以获取File 对象。

    要在外部存储上为您的应用获取唯一的位置,请使用getExternalFilesDir(),调用任何Context(例如您的Activity,以获取File 对象。

    要在外部存储中为常见类型的文件(例如电影)获取标准位置,请在Environment上使用getExternalStoragePublicDirectory()

    要获得外部存储的,请在Environment上使用getExternalStorageDirectory()。然而,现在这被认为是草率的编程,因为它鼓励开发人员只是将文件放在随机位置。

    【讨论】:

    • 我是安卓编程新手。我将文件保存到存储中。例如,当我查看我的 Galaxy Note 2 的 /storage/sdcard0/ 时,我看到了 Whatssapp、音乐、闹钟……如何获取所有手机/标签的 /storage/sdcard0/ 路径。谢谢。
    • @ErdinçÖzdemir:在Environment 上使用getExternalStorageDirectory()。然而,现在这被认为是草率的编程,因为它鼓励开发人员将文件放在随机位置。此外,表示外部存储的特定路径因制造商和操作系统版本而异。这就是您使用方法而不是硬编码字符串来查找外部存储位置的原因。
    • @CommonsWare:我的 LG Optimus 设备上有内部存储,它将内部存储指向 /storage/sdcard0/,我通过文件管理器检查了它......所以sdcard0 指向内部还是外部,这有点令人困惑
    • @shihon:“我的 LG Optimus 设备上有内部存储空间”——您在 LG Optimus 设备上有内部和外部存储空间,除非您用锤子或其他东西将其打破,在这种情况下您有两者都不。请阅读文档以了解“外部存储”的定义。
    • @CommonsWare:我为什么要用锤子砸坏我的设备...我知道外部存储的定义...无论如何感谢您对锤子的支持
    【解决方案3】:

    找到的解决方案是 第一次编辑模拟器:

    1. 转到 Android 虚拟设备管理器,然后编辑模拟器
    2. 为受人尊敬的模拟器设置 100 MB 的 SD d 卡,说好的
    3. 保存并关闭模拟器并启动

    它对我有用,应用程序不再报错并且工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      相关资源
      最近更新 更多