qeemiaomiao
LarryQ
2013-04-18 09:54
采纳率: 66.7%
浏览 47.5k

Android得到的真机的SD卡路径是 /storage/emulated/0/!!!!!!!!!!

如题,一个小时前测试得到还是正确路径,现在得到的却是/storage/emulated/0/,NEXUS4和GALAXY S2都得不到正确的,有一台中兴能得到正确的。权限什么的都加好了。
之前还可以的,怎么突然就犯病了呢?

已经解决了,得到的/storage/emulated/0/是引用路径,其实也是可以用的。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

21条回答 默认 最新

  • zhjw009
    zhjw009 2013-04-18 12:12
    已采纳

    我得到SD卡的路径用的是这个:Environment.getExternalStorageDirectory(),你试试

    点赞 评论
  • guoleimail
    guoleimail 2013-04-18 10:16

    用Environment.getExternalStorageDirectory().getAbsolutePath()获取试下

    点赞 评论
  • changsheng1453052832
    Java_Super_Man 2013-04-18 10:52

    极有可能还是代码问题,仔细调试下看看。

    点赞 评论
  • zqchn
    zqchn 2013-04-19 03:07

    这个应该是不同的机型可能一些厂家进行了自己的设置,只要照常使用应该没问题

    点赞 评论
  • heaimnmn
    哎,真难 2014-11-18 06:11

    Environment.getExternalStorageDirectory().getAbsolutePath()得到的是引用路径,有引用就OK了

    点赞 评论
  • caiwenfeng_for_23
    ISH_ICODE 2014-11-19 06:52

    不同手机对sd卡的路径设置不一样的!
    不同手机对sd卡的路径设置不一样的!

    点赞 评论
  • caoyuan1983
    caoyuan1983 2014-11-19 07:23

    sd卡也有路径为/storage/emulated/1的

    点赞 评论
  • u014114700
    杜甫不服 2014-11-19 08:46

    手机sd卡默认路径/storage/emulated/是没错的, 很有可能是你代码的问题,把你的代码粘过来看看就知道啦。

    点赞 评论
  • qq_23291497
    qq_23291497 2014-11-20 02:51

    手机sd卡默认路径/storage/emulated/是没错的, 很有可能是你代码的问题,把你的代码粘过来看看就知道啦。

    点赞 评论
  • ABC8286946
    _wlfly 2014-11-21 01:00

    android是基于linux的,linux里的要使用存储设备就要先把它挂载到到linux的目录树上(以/为根),android上一般是挂载到/storage/emulated/这个目录对应的目录或者/storage对应目录里的,假如你可以放两张内存卡,那些就可能是分别挂载到 /storage/emulated/0/  和/storage/emulated/1/ 这样的目录。。而你得到/storage/emulated/0/是你SD卡的真正目录。。不是引用路径。以前你可能会得到的是/sdcard 这样的路径。那个才是一个链接(你所说的引用),链接到你SD直正的挂载目录/storage/emulated/0 。。所以当你访问两个路径时得到的内容是一样的。

    点赞 评论
  • wangyy5201314
    wangyy5201314 2014-11-22 00:57

    用Environment.getExternalStorageDirectory().getAbsolutePath()获取试下

    点赞 评论
  • yuandicheng
    yuandicheng 2014-11-22 05:35

    我得到SD卡的路径用的是这个:Environment.getExternalStorageDirectory(),你试试
    手机SD卡的问题可能是代码的问题,你查查看就好了

    点赞 评论
  • u010657219
    Jalon007 2014-11-25 02:31

    public String getSDPath(){
    File sdDir = null;
    boolean sdCardExist = Environment.getExternalStorageState()

    .equals(Android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
    if (sdCardExist)

    {

    sdDir = Environment.getExternalStorageDirectory();//获取跟目录
    }

    return sdDir.toString();

    }

    点赞 评论
  • u014090687
    淬心石 2014-11-25 09:28

    我和他们用的一样的没有什么问题

    点赞 评论
  • a85907468
    a85907468 2014-11-26 01:46

    恩,应该是不同机型的原因,有的机器会算机身内存和sd卡,有的就只算SD卡!

    点赞 评论
  • caijing5200
    _Caij 2014-11-28 03:08

    小米的就是这样的。 只要是通过代码获得的都不会错

    点赞 评论
  • FengQingYang90
    风清扬90 2014-12-01 09:06

    如题,一个小时前测试得到还是正确路径,现在得到的却是/storage/emulated/0/,NEXUS4和GALAXY S2都得不到正确的,有一台中兴能得到正确的。权限什么的都加好了。

    点赞 评论
  • crazy1235
    月盡天明 2014-12-05 01:22

    对啊!这个路径就可以用的!

    点赞 评论
  • qq_23699569
    qq_23699569 2014-12-12 12:14

    android是基于linux的,linux里的要使用存储设备就要先把它挂载到到linux的目录树上(以/为根),android上一般是挂载到/storage/emulated/这个目录对应的目录或者/storage对应目录里的,假如你可以放两张内存卡,那些就可能是分别挂载到 /storage/emulated/0/  和/storage/emulated/1/ 这样的目录。。而你得到/storage/emulated/0/是你SD卡的真正目录。。不是引用路径。以前你可能会得到的是/sdcard 这样的路径。那个才是一个链接(你所说的引用),链接到你SD直正的挂载目录/storage/emulated/0 。。所以当你访问两个路径时得到的内容是一样的。

    点赞 评论
  • nmgyjz
    nmgyjz 2015-01-02 01:33

    /storage/emulated/0/

    点赞 评论
  • androidstarjack
    androidstarjack 2015-01-04 13:34

    你要得到手机外置sd卡的路径:最好用反射的方法:
    public List getSDPaths(){//得到全部存储地址(SD卡,手机内存)
    List paths = new ArrayList();
    StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
    try {
    Class<?>[] paramClasses = {};
    Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses);
    getVolumePathsMethod.setAccessible(true);
    Object[] params = {};
    Object invoke = getVolumePathsMethod.invoke(storageManager, params);
    for (int i = 0; i < ((String[])invoke).length; i++) {
    paths.add(((String[])invoke)[i]);
    Log.i("tag1", "路径:"+((String[])invoke)[i]);
    }
    } catch (NoSuchMethodException e1) {
    e1.printStackTrace();
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    }
    return paths;
    }
    若集合的大小为2,则有外置的sd卡,
    若是自身储存的路径是:list.get(0),外置的sd卡的路径是list.get(1);
    你要得到手机外置sd卡的路径:最好用反射的方法:
    public List getSDPaths(){//得到全部存储地址(SD卡,手机内存)
    List paths = new ArrayList();
    StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
    try {
    Class<?>[] paramClasses = {};
    Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses);
    getVolumePathsMethod.setAccessible(true);
    Object[] params = {};
    Object invoke = getVolumePathsMethod.invoke(storageManager, params);
    for (int i = 0; i < ((String[])invoke).length; i++) {
    paths.add(((String[])invoke)[i]);
    Log.i("tag1", "路径:"+((String[])invoke)[i]);
    }
    } catch (NoSuchMethodException e1) {
    e1.printStackTrace();
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    }
    return paths;
    }
    若集合的大小为2,则有外置的sd卡,
    若是自身储存的路径是:list.get(0),外置的sd卡的路径是list.get(1);

    点赞 评论

相关推荐