【问题标题】:how to recognize external sd card mounted in the device and that device also have internal sd card?如何识别设备中安装的外部 sd 卡并且该设备也有内部 sd 卡?
【发布时间】:2012-07-14 11:34:31
【问题描述】:
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))            
{           
    System.out.println("​sd card present");         
}

通过使用此代码,我能够找到 sd 卡,但我无法识别它是哪张 sd 卡。那是内置 sd 或外部...

http://androidforums.com/samsung-galaxy-s2-t/557831-am-i-saving-sdcard-not.html 请参考此链接一次.....

SGS2 三星 有一个 2 GB 分区用于系统,其余 14 GB 分区并通过将其挂载点设置为 sd 卡将其识别为 sd 卡。除此之外,我们可以在该设备中安装一个外部可移动 sd 卡。那么如何通过编程识别外接可移动sd卡。

【问题讨论】:

  • 没有标准的 API。您将不得不寻找供应商扩展,或通过 /proc/mounts 寻找可能的候选者 - 可移动卡(或至少您应该考虑使用的分区)可能是 FAT 文件系统的某种变体(但获得API 的主要外部存储 - 在非 FAT 的 MTP 设备上)。或者只是让高级用户浏览整个设备并选择一个位置。
  • 这项工作会public static boolean isExternalStorageRemovable ()吗? @ChrisStratton
  • 假设它确实如其名称所暗示的那样,这对您有何帮助?它仅指官方(即主要)外部存储。我想它可能会告诉你不要费心寻找替代品 - 尽管可以设想一款带有 sdcard 插槽的平板电脑,因为它是“外部存储”,也有供应商支持安装 USB 拇指驱动器。
  • @ChrisStratton :谢谢您给我回复....................我最初的要求是将一些文件复制到外部 sd 卡中,即可移动的sd卡。如何找到可移动 sd 卡的路径而不是外部不可移动 sd 卡...

标签: android android-intent android-ndk


【解决方案1】:
String sdcardpath = null;
    File[] faFiles = new File("/mnt").listFiles();
    abc: {
        for (File file : faFiles) {
            if (file.isDirectory()) {
                String pathMain = "" + file.getAbsolutePath();
                Log.v("@@@@@@@@@@@@@@@@", "222222222222" + pathMain);
                if (pathMain.indexOf("ext") > 0&&pathMain.startsWith("/mnt/")) {
                    File fp = new File(pathMain);
                    if (fp.canWrite()) {
                        Log.v("@@@@@@@@@@@@@@@@", "33333333333333333"
                                + pathMain);
                        //external sd card is there..
                        sdcardpath = pathMain;
                        break abc;
                    }
                    else{

                    }
                } else {
                    if (pathMain.indexOf("sd") > 0) {
                        File fp = new File(pathMain);
                        if (fp.canWrite()) {
                            Log.v("@@@@@@@@@@@@@@@@", "33333333333333333"+ pathMain);
                            sdcardpath = pathMain;

                               //internal sd card is there..
                        }

                    }
                }
            }
        }
    }

【讨论】:

  • 我不知道这是否正确,但我确实喜欢它对我有用..
  • 不...我见过将额外的 sdcard 放在 / 而不是 /mnt 下的设备
猜你喜欢
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多