获取galaxy note上的内部目录路径

时间:2013-09-24 12:13:39

标签: java android android-external-storage

在我的应用程序中,我通过使用以下方法访问外部存储(根据this,它可以是内部存储或SD卡的一部分),在我的Xperia V中,它返回内部存储的路径(不是SD)卡)。

String root = Environment.getExternalStorageState().toString();

当我尝试在没有安装SD卡的Galaxy笔记上运行应用程序时,我发现上面的方法没有返回存储路径。(app应该保存文件,如果它获得成功的路径)。所以我可以知道有没有一种方法可以访问外部存储器(没有安装SD卡)。?

谢谢

3 个答案:

答案 0 :(得分:1)

获取外部存储路径尝试这样..

String root = Environment.getExternalStorageDirectory().getPath();

它将重新调整外部存储的确切路径

答案 1 :(得分:0)

首先,您的应用必须具有写入外部存储的权限,它在清单文件中指定,请参阅以下内容:

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

其次,我们应该检查外部媒体是否已挂载,请查看我的某个Android应用程序的工作片段,它将在外部存储上为您创建目录(如果尚不存在),否则返回该目录的File对象。

File getRecordingDirectory()
    {
        File recordingDir = null;

            // get the state of external storage
        String externalStorageState = Environment.getExternalStorageState();

        if(externalStorageState.equals(Environment.MEDIA_MOUNTED))
        {
            File extDir =
                    Environment.getExternalStorageDirectory();

            recordingDir = new File(extDir, "AudioRecorder");

            if(!recordingDir.exists())
            {
                if(!recordingDir.mkdirs())
                {
                Log.e("RECORDER", "Unable to create Silent Recorder recordings directory.");
                }
            }
        }
        return recordingDir;
    }

答案 2 :(得分:0)

private String getInternalSDPath() {
    File file = new File("/system/etc/vold.fstab");
    FileReader fr = null;
    BufferedReader br = null;

    try {
        fr = new FileReader(file);
    } catch (FileNotFoundException e) {

    }
    String path = null;
    try {
        if (fr != null) {
            br = new BufferedReader(fr);
            String s = br.readLine();
            while (s != null) {
                if (s.startsWith("dev_mount")) {
                    String[] tokens = s.split("\\s");
                    path = tokens[2]; // mount_point
                    if (Environment.getExternalStorageDirectory()
                            .getAbsolutePath().equals(path)) {
                        break;
                    }
                }
                s = br.readLine();
            }
        }
    } catch (IOException e) {

    } finally {
        try {
            if (fr != null) {
                fr.close();
            }
            if (br != null) {
                br.close();
            }
        } catch (IOException e) {

        }
    }
    return path;
}

要获取外部SD卡安装目录,只需更改:

                    if (Environment.getExternalStorageDirectory()
                            .getAbsolutePath().equals(path)) {
                        break;
                    }

致:

                    if (!Environment.getExternalStorageDirectory()
                            .getAbsolutePath().equals(path)) {
                        break;
                    }

注意:此方法特定于reather设备,我可以使用它,因为我知道我只针对具有额外内部存储空间的三星设备进行开发。如果您希望这适用于所有设备,则必须进行其他更改。