【问题标题】:System.getenv("SECONDARY_STORAGE") return null on some devicesSystem.getenv("SECONDARY_STORAGE") 在某些设备上返回 null
【发布时间】:2014-10-30 11:40:23
【问题描述】:

我正在尝试获取 android 设备上的外部存储列表,在某些设备中,指令 System.getenv("SECONDARY_STORAGE"); 返回 null,尽管 sd 卡已安装在设备中 (4.1.1)。

我正在使用Dimitriy 解决方案来执行此操作并且工作正常,但在某些设备中我遇到了这个问题。

有人知道在什么情况下System.getenv("SECONDARY_STORAGE") 可以返回null

非常感谢

【问题讨论】:

    标签: android storage external


    【解决方案1】:

    在我的实验中, 调用System.getenv("SECONDARY_STORAGE")时,一些旧的HTC设备会返回null

    我发现此类设备中的实际 microSD 路径安装在

    /storage/sdcard0/ext_sd/
    
    /sdcard2/
    
    /mnt/sdcard/ext_sd/
    

    由于外部存储环境变量由手机制造商定义。 我们没有 API 来准确获取 microSD 路径。

    【讨论】:

      【解决方案2】:

      这里是解决方案。 试试看……

      首先获取列表中的所有文件

      var file=new Java.IO.File("storage/");
      var listOfStorages=file.ListFiles();
      
      var isSDPresent=false;
      if(listOfStorages[1].Name.Containes("emulated")||listOfStorages[0].Name.Containes("-"))
      {
         isSDPresent=true;
      }
      

      【讨论】:

      • 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。
      猜你喜欢
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多