Android App Saves to 'Emulated' Storage Instead Of Actual Directory
<p>I'm attempting to save a JSON string to a file on the 'External' storage. Specifically the Documents folder. This would should be the storage you could access with a file browser, from gmail, or over USB on your computer.</p>

<p>So I followed the documentation <a href="https://developer.android.com/training/basics/data-storage/files.html#WriteExternalStorage" rel="nofollow noreferrer">here</a> and came up with this: (note, changed to now create directory first, then append filename. Save now attempts to use MediaScanner)</p>

<pre><code>public static File GetDocumentsPath(String tuningName) {
    // Get the directory for the user's public pictures directory.
    File dir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());
    if (!dir.mkdirs()) {
        Logy.CallPrint("JSONTuning", "Directory not created");
    }

    File outFile = new File(dir, tuningName);

    return outFile;
}

public static String SaveTuning(Context context, String fileName, String json)
{
    File path;
    if(fileName.contains(".rfts")) {
        path = GetDocumentsPath(fileName);
    } else {
        path = GetDocumentsPath(fileName+".rfts");
    }


    Logy.Print("|||||||||||||||| "+path.getPath());

    try {
        FileOutputStream fileOut = new FileOutputStream(path);
        ObjectOutput strOut = new ObjectOutputStream(fileOut);
        strOut.writeUTF(json);
        strOut.close();
        fileOut.close();

        MediaScannerConnection scanner = new MediaScannerConnection(context, null);
        scanner.connect();
        if(scanner.isConnected())
            scanner.scanFile(path.getPath(), null);
        scanner.disconnect();

        return "Save Successful";
    }
    catch(java.io.IOException e) {
        return e.getMessage();
    }
}
</code></pre>

<p>So I logged the path I was getting from GetDocumentsPath.
That path would be: /storage/emulated/0/Download/Test.rfts</p>

<p>This does not lead to the file being saved in Documents as far as what I can access via file manager/computer. The fact that the word "emulated" is in there leads me to believe Environment isn't giving me the actual path at all.</p>

<p>I do get the error "/storage/emulated/0/Documents/Test.rfts: open failed: ENOENT (No such file or directory)"</p>

<p>What's needed to get the correct path, and save to, the documents folder in external storage?</p>

<p>As a side note, the way I write the file works perfectly fine for internal storage, as I'm having no issues creating a file with app settings.</p>