String path = Environment.getExternalStorageDirectory()+"/MediaPad/video/";
//不要用R.string.settingFile将路径配置死了
File settingFile = new File(path);
Log.d("debug",settingFile.toString());
if(settingFile.exists()){
    Log.d("debug","exists");
} else {
    Log.d("debug","not exists");
}

解决方案 »

  1.   

    厂家无论怎么修改sdcard的路径,它在framework层Environment.java文件中肯定指定其所在的sdcard路径变量EXTERNAL_STORAGE_DIRECTORY。所以你在应用程序里面只要调用这个函数Environment.getExternalStorageDirectory()在不同的安卓平台上面就会得到正确的sdcard的路径了; 最土的办法就是遍历查找mnt目录下面的文件夹。
      

  2.   


    谢谢回复哈,其实我就是用的Environment.getExternalStorageDirectory()来取得路径,只是为了举例说明就简写了,在同一个虚拟机里面,用eclipse编译生成的APK就没有问题,可以读取。但是把project放到android源代码里面用mm编译生成的APK就读不到了,
    只能读到/mnt/sdcard ,/mnt/sdcard里面的内容读不出来。
      

  3.   

    可以通过jni绕到c++层去,不一定要在java层
      

  4.   

    你说只能读到/mnt/sdcard/往下都读不到了,是不是权限的问题阿 ?
      

  5.   

    我在4.1也遇到了,估计是权限问题,但我用上层应用生成的apk来访问外置sdcard,都可以读,没有外加任何权限
    我在framwork/base/policy下面执行访问也不行,在framework/base/core/res/AndroidManifest.xml里面加入了
        <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
    还是不行,依旧读不到,执行file.exists()仍旧返回错误
      

  6.   

    此问题我也遇到过,建议你先看下权限,你在源码中编你的apk就是system用户,但是/sdcard目录的文件可能不允许system 用户去读写,办法是修改/sdcard的权限让system用户可以读写(前提是你做的是定制开发)
      

  7.   

    对,我也觉得是权限问题,所谓的权限并不是说单纯的Android 清单文件中的权限,是这个/mnt/sdcard/的权限(linux下的权限概念)
      

  8.   

    /sdcard就是链接到/mnt/sdcard的;
      

  9.   

    说错了,shell@android:/ $ ls -al mnt/
    ls -al mnt/
    drwxr-xr-x root     system            2013-09-16 09:41 asec
    d--------- system   system            2013-09-16 09:40 cd-rom
    drwxr-xr-x root     system            2013-09-16 09:40 obb
    lrwxrwxrwx root     root              2013-09-16 09:40 sdcard -> /storage/sdcard0
    lrwxrwxrwx root     root              2013-09-16 09:40 sdcard2 -> /storage/sdcard1
    drwx------ root     root              2013-09-16 09:40 secure
    看/mnt/sdcard的权限是777的啊,程序应该是可以读的啊。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>这个权限加了吗?